A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 楚燮哥哥 中级黑马   /  2014-12-9 10:02  /  1093 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、     点语法
通过点语法可以快速的存取数据,例如有一个Person类
@implementation Person
- (void)setAge:(int)age
{
    _age = age;
}
- (int)age
{
    return _age;
}
@end
    Person *p = [Person new];
    p.age = 10;            // 该语句在编译的时候会被替换为[p setAge:10];
NSLog(@"age=%d",p.age);  // p.age在编译的时候会被替换为[p age];
点语法里,有赋值的为setter,没有的为getter
二、     成员变量作用域
@public : 在任何地方都能直接访问对象的成员变量
@private : 只能在当前类的对象方法中直接访问(@implementation中默认是@private)
@protected : 可以在当前类及其子类的对象方法中直接访问  (@interface中默认就是@protected)
@package : 只要处在同一个框架中,就能直接访问对象的成员变量
@interface和@implementation中不能声明同名的成员变量
作用域代码如下:
@public // 在任何地方都能直接访问对象的成员变量
    int _age;
   
   
    @private  // 只能在当前类的对象方法中直接访问
    int _height;
   
    @protected // 能在当前类和子类的对象方法中直接访问
    int _weight;
三、     @property的使用
@property会在编译的时候自动为成员变量生成setter和getter的声明和实现方法
例如
@property int age;
@synthesize会在编译的时候为成员变量自动生成setter和getter的实现方法,如果没有定义该成员变量,则会自动生成@private类型的变量
例如
@synthesize age = _age;
四、     id类型
id为Object-C对象的通用类型,也就是说可以用id来指向何对象
例如:
id p = [Personnew];
id定义在运行期数据库的头文件里面
typedef structobje_object{
       Class isa;
} *id
由于id在定义时就已经是指针类型,所以指向对象时不用加“*”。

10 个回复

倒序浏览
楼主技术分怎么破
回复 使用道具 举报
King灬love 发表于 2014-12-9 10:07
楼主技术分怎么破

差不多用了20多天吧,水完这最后一贴,我的技术分也就够了,另外得感谢船长打赏得2个技术分:lol
回复 使用道具 举报
有没有wins上编译OC的软件?
回复 使用道具 举报
有没有wins上的oc编译软件
回复 使用道具 举报
我的技术分怎么办
回复 使用道具 举报
oc有没有私有方法?
回复 使用道具 举报
pingfan183 发表于 2014-12-10 11:17
oc有没有私有方法?

有的,@private
回复 使用道具 举报
。烊了 发表于 2014-12-10 10:55
我的技术分怎么办

你的blog的多少分呀
回复 使用道具 举报

求例子,@private表示的是私有变量。。。。。私有方法怎么表示,
回复 使用道具 举报
任冰冰 发表于 2014-12-12 02:01
你的blog的多少分呀

19.。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马