zoukankan      html  css  js  c++  java
  • OC-核心语法1

    1. 点语法:对象调用方法

    上述完整方法为- (void)setAge:(int)age;
    1> 如何判断set和get方法:
    如果赋值,则是set方法。
    eg:stu.age = 10;
    否则是get方法。
    eg : int age = stu.age;
    2>注意:一定要与访问成员变量区分:
    访问成员变量:p->_age;

    2.成员变量作用域

    @public:任何地方都可以直接访问(任何地方直接访问)
    直接访问:p->_age=20;
    @private:只能在当前类的对象中访问(当前类的对象直接访问,成员属性属于哪个类,则只有那个类可以访问)
    eg:

    @interface Person : NSObject  // 声明Person类  
    {  
         @private  
         int _age; // _age属性只能被Person类访问  
    }  
    - (void)setAge:(int)age; // age属性的setter和getter方法  
    - (int)age;  
    @end  
    @implementation Person  // 实现Person类  
    - (void)setAge:(int)age  
    {  
         _age=age;  
    }   
    - (int)age  
    {  
         return _age;  
    }  
    @end  
    @interface Student : Person (定义student类,继承Person类)  
    - (void)study; // 声明学习的方法  
    @end  
    @implementation Student  // 实现Student类  
    - (void)study  
    {  
         [self setAge:20]; // 通过setter方法访问父类的私有对象  
    }  
    @end
    
    

    注意点:如果子类访问此属性,则只能通过setter和getter方法访问。
    @protected:可以在当前类以及子类中对象访问(当前类和子类的对象直接访问,默认)
    @package:在同一框架中可以访问,介于@private和@public之间
    注:
    (1)在@interface声明中自定义变量类型是 @protected
    (2)在@implementation实现中自定义变量类型是@private

    @implementation Person  
    {  
         int _age; // 此对象是私有的  
    }  
    @end
    
    

    (3)@implementation不能定义和@interface同名的成员变量

    3.@property 和 @synthesize

    1>@property:
    可以自动生成某个成员变量的setter和getter的方法声明
    eg:@property int age; // 会自动生成_age成员变量
    // int是get方法的返回值类型和set方法的形参类型。 age是set形参名和get的方法名
    自动生成 - (void)setAge:(int)age;

    • (int)age;

    2>@synthesize
    自动生成set方法和get方法的实现,并且会访问_age这个成员变量
    eg:@synthesize age = _age; // 代表形参age会访问_age这个成员变量,如果无_age,则会自动生成
    @synthesize age; // 代表默认访问age成员变量,如果没有,则自动生成age成员变量
    //如果_age在类中不存在,则会自动生成@private类的age
    注:1.如果手动实现了setter方法,则编译器就只会自动生成getter方法
    如果手动实现了getter方法,则编译器自动生成setter方法方法

    3>注意点
    (1)方法调用时,会优先调用手工编写的方法,如果没找到再调用自动生成的方法。
    (2)@property会自动生成_成员变量名。
    eg: @property age; // 自动生成_age,类型是@private;
    @synthesize 会自动生成 成员变量名。
    eg: @synthesize age; // 自动生成age,类型是@provate;
    (3)重点例子:

    @interface Person : NSObject // 声明Person类
    @property int age; 
    @end
    @implementation Person
    @end
    
    

    解析:@property int age代码有如下三个作用:
    1>生成_age成员变量。
    2>声明 _age成员变量的setter和getter方法
    3>实现_age成员变量的setter和getter方法

    4. id

    概念:万能指针,能指向或操作任何OC对象。(已经包含了* ,在调用时不需要加*)
    相当于NSObject *

    eg: id d= [student new]; // 使用student类创建对象d
    或者 NSObject *d = [student new]; // 多态语法

  • 相关阅读:
    WPF treeview 多层次绑定问题 HierarchicalDataTemplate 和 CompositeCollection
    Difference between Visibility.Collapsed and Visibility.Hidden
    WPF style的继承
    Asp.net个性化服务《系列03_购物车》
    SQLServer2005中的uniqueidentifier数据类型与NEWID()函数
    扉页语
    Asp.net个性化服务《系列01_概述》
    Asp.net个性化服务《系列02_快速的匿名用户个性化》
    2010年java课程体系
    easyui修改提示窗
  • 原文地址:https://www.cnblogs.com/wlios/p/4631878.html
Copyright © 2011-2022 走看看