iOS:不同属性声明方式的解析

代码:

/*

属性声明方式说明:

----------------------- 1
@interface ...
{
    id name
}
@end

这样声明的属性其实可以认为是private属性,因为它只能在方法里通过name引用,外部无法通过“object.name”的方式进行引用 (内部也不能通过self引用)

----------------------  2

@interface ...
@property id name
@end

这样声明的属性可以认为是public属性,内部通过“self.name”引用;外部通过“object.name”引用

----------------------- 3
@implementation ...
@synthesize name
@end

允许以property声明的属性,在内部方法里除了以self引用外,还可以用属性名直接引用

----------------------- 4

self.name
其实是是两个方法(setter,getter):

id value = [self name]
[self setName = ...]

----------------------- 5

总结:
如果框架依赖的属性是@property,就不能实现为私有,否则程序可以崩掉

*/

#import <Foundation/Foundation.h>

@interface Student : NSObject
{
    NSString *name;
}

@property NSString *address;

-(void) toString;

@end

@implementation Student

@synthesize address;

-(Student *)init
{
    name = @"lishujun";
    self.address = @"beijing";
    return self;
}

-(void) toString
{
    NSLog(@"%@ %@", name, [self address]);
}

@end

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // insert code here...
        Student *student = [[Student alloc]init];
        [student toString];
        [student setAddress:@"tongzhou"];
        [student toString];
        NSLog(@"%@", student.address);

        // 语法错误,没有setName这个方法
        //[student setName:@"shujunli"];
        //[student toString];

    }
    return 0;
}
时间: 2024-10-24 13:08:51

iOS:不同属性声明方式的解析的相关文章

iOS的属性声明:retain和strong的区别

声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在声明Block时,使用strong和retain会有截然不同的效果.strong会等于copy,而retain竟然等于assign! 当然定义Block还是应该用copy(还有其他需要注意的地方,可以参考这篇文章:iOS: ARC和非ARC下使用Block属性的问题),因为非ARC下不copy的Block会在栈中,ARC中的Block都会在堆上的. 可以这样复现问题.在非ARC环境下,定义一个简单

iOS 应用数据存储方式(XML属性列表-plist)

iOS 应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆开存储) 5.Core Data(对象型的数据库,把内部环节屏蔽) 二.应用沙盒 每个iOS应用都有?己的应?沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应?必须待在?己的沙盒里,其他应用不能访问该

ios应用数据存储方式(XML属性列表-plist)

ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆开存储) 5.Core Data(对象型的数据库,把内部环节屏蔽) 二.应用沙盒 每个iOS应用都有?己的应?沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应?必须待在?己的沙盒里,其他应用不能访问该沙

iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist

iOS开发UI篇—ios应用数据存储方式(XML属性列表-plist) 一.ios应用常用的数据存储方式 1.plist(XML属性列表归档) 2.偏好设置 3.NSKeydeArchiver归档(存储自定义对象) 4.SQLite3(数据库,关系型数据库,不能直接存储对象,要编写一些数据库的语句,将对象拆开存储) 5.Core Data(对象型的数据库,把内部环节屏蔽) 二.应用沙盒 每个iOS应用都有?己的应?沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应?必须待在?己的沙盒里,其

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

【转】iOS中属性与成员变量的区别

转载自http://www.cnblogs.com/crazypebble/p/3439261.html 一.类Class中的属性property 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIBut

iOS中XML、JSON数据结构解析以及第三方类的引用

今天讲到数据结构解析的内容:XML和JSON两种 XML数据结构:是扩展于HTML,主要使用标签对<start></start> 其解析有两种: 1.SAX解析(Simple API for XML).是基于事件驱动的解析方式,逐行解析数据(采用协议回调机制) NSXMLParser是iOS自带的XML解析类.解析过程由NSXMLParserDelegate协议方式回调 解析过程:开始标签-->取值-->结束标签-->取值 使用过程如下: @interface T

iOS开发教程:Storyboard全解析-第一部分

本文转载至http://blog.csdn.net/chang6520/article/details/7945845 感谢原文作者分享 故事版(Storyboard)是一个能够节省你很多设计手机App界面时间的新特性,下面,为了简明的说明Storyboard的效果,我贴上本教程所完成的Storyboard的截图:   现在,你就可以清楚的看到这个应用究竟是干些什么的,也可以清楚的看到其中的各种关系,这就是Storyboard的强大之处了.如果你要制作一个页面很多很复杂的App,Storyboa

IOS TextField属性

原文请链接:http://blog.csdn.net/tskyfree/article/details/8121915/ //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef en