IOS中的@property 与 assign copy retain 的区别参考

//@理解为 OC 代码的标记
//如何去创建一个对象 创建对象的两步:
// (1)为对象在堆区中开辟空间
Student *stu =[Student alloc];
//在 OC 里面调用方法,采用的是消息发送机制
//在才OC里所有的对象都用指针变量去储存
//(2)初始化
[stu init]; //面向对象 与 过程的区别
//面向过程:以事件为中心,考虑完成事件的详细步骤
//面向对象:以事物(类 或 对象)为中心,考虑的是每个事物应具备的功能。而完成事件只是其中的一个小小的功能
//OOP (Object Oriented Programming) 面向对象的编程
//OO (Object Oriented)
// 类 : 具有相同特征和行为的事物的抽象
// 对象 : 对象类的实例 ,类的具体表现
//描述一个类 : 通过特征和行为 //类的表示文件
//类名的命名规范:首字母要大写 在 OC 中所有的类都继承于 NSObject 类
//OC 中的类 在 C 语言里是文件
// 一个类的定义 分为 接口(.h 文件) 实现 (.m 文件) 两部分
//区分 文件 类 .h 文件 接口文件(头文件) (.m 就是实现文件)
//总结:接口文件(.h 文件) 功能就是为外界提供可访问的接口 声明类的特征和行为
//实现文件 (.m 文件):主要实现在接口中声明好的行为
//特征 也叫实例变量
// 接口部分的定义 @interface + 类名 : 父类名 @end (:作用就是说明当前类继承于哪个父类)NSObject 就是一个基类
//在接口文件里面的定义 必须写在 @interface 和 @end 之间。
// @implementation 与 @end 之间去实现接口文件中的声明的行为

知识块

-(void)eat;
// - 是对象可调用的方法; + 是类方法类型
// void playWithSome(NSString * name);
-(void)playWithSome:(NSString *)someone;
//方法名字是 haveLaunchWithSomeone: money:
-(void)haveLaunchWithSomeone:(NSString *)name money:(NSInteger)money; #import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
Person *per = [[Person alloc]init];
per->_age = ;
per->_gender= @"男";
per ->_name = @"CCCC";
per->_height = 1.75;
[per eat];//消息发送机制
//真正的对象是在堆区的那块内存,只不过per 存放了这块内存的首地址,所以可以叫per 是person类的一个对象
//init 实际上 init 为 per 对象里定义的实例变量初始化
//消息接收机制 [recevier message] [接受者 发送者]
Person *per2 = [[Person alloc]init];
per2 ->_name = @"DDDDDD";
per2 ->_gender = @"女";
per2 ->_age = ;
per2 ->_height = 1.68;
[per2 eat];
}
return ;
} #import <Foundation/Foundation.h> @interface Person : NSObject
{
//实例变量的三种可见度
@public
//public之后的实例变量都是公开的
//大括号里面 就是该类的实例变量(特征)而且该实例变量 必须在大括号内定义
//对应描述一个类的特征
//姓名
NSString *_name;
//年龄
NSInteger _age;
//性别
NSString *_gender;
//身高
CGFloat _height;
}
-(void)eat;
// - 是对象可调用的方法; + 是类方法类型
// void playWithSome(NSString * name);
-(void)playWithSome:(NSString *)someone;
//方法名字是 haveLaunchWithSomeone: money:
-(void)haveLaunchWithSomeone:(NSString *)name money:(NSInteger)money;
//方法名字 getMoney: 一个冒号代表该方法有一个参数,有几个冒号代表有几个参数
//C语言写法:void getMoney(int money);
-(void)getMoney:(NSInteger)money;
-(void)study;//该方法没有返回值,所以后面就没有冒号
// //写一个对象方法 有三个参数 NSString NSInteger CGFloat
-(void)showSomeName:(NSString *)name
WithAge:(NSInteger)age
Height:(CGFloat)height;
@end #import "Person.h" @implementation Person //如果在 .h 中声明了方法,没有实现的话,这里会有个警告
-(void)eat{
NSLog(@"吃货");
}
// - 是对象可调用的方法; + 是类方法类型
// void playWithSome(NSString * name);
-(void)playWithSome:(NSString *)someone{
NSLog(@"和%@去玩了",someone);
}
//方法名字是 haveLaunchWithSomeone: money:
-(void)haveLaunchWithSomeone:(NSString *)name
money:(NSInteger)money{
NSLog(@"和%@去吃饭了,花了%ld钱",name,money);
}
//方法名字 getMoney: 一个冒号代表该方法有一个参数,有几个冒号代表有几个参数
//C语言写法:void getMoney(int money);
-(void)getMoney:(NSInteger)money{
NSLog(@"有100元可以花,还有%ld钱",money);
}
-(void)study{
NSLog(@"good study ,day up");
}//该方法没有返回值,所以后面就没有冒号
// //写一个对象方法 有三个参数 NSString NSInteger CGFloat
-(void)showSomeName:(NSString *)name
WithAge:(NSInteger)age
Height:(CGFloat)height{
NSLog(@"%@ %ld %.2f",name,age,height);
}
@end

知识块

属性方法 参考

int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
Person *per = [[Person alloc]init];
per->_age = ;
per->_gender= @"男";
per ->_name = @"NNNN";
per->_height = 1.75;
[per eat];//消息发送机制
//真正的对象是在堆区的那块内存,只不过per 存放了这块内存的首地址,所以可以叫per 是person类的一个对象
//init 实际上 init 为 per 对象里定义的实例变量初始化
//消息接收机制 [recevier message] [接受者 发送者]
Person *per2 = [[Person alloc]init];
//为per2 对象的实例变量赋值
per2 ->_name = @"LLL";
per2 ->_gender = @"女";
per2 ->_age = ;
per2 ->_height = 1.68; // + 代表是类方法 只有给类使用
// - 代表是对象方法 只有对象使用
//字符串之前 一定要加 @
[per haveLaunchWithSomeone:@"HHHHH" money:];
// Person *per3 = [Person new];//采用 垃圾回收
//OC 中内存管理的方式有两种: 垃圾回收MAc编程下 、IOS下引用计数
//IOS 中内存管理方式主要是 :引用计数
//per2 对象调用方法
[per2 showSomeName:per2->_name WithAge:per2->_age Height:per2->_height]; //自己写一个汽车类,为汽车类声明实例变量和方法,实现方法
Car *car = [[Car alloc]init];
car->_name = @"老爷车";
car->_color = @"富贵红";
car->_national = @"中国制造";
car->_wheels = ;
car->_speed = 120.5;
[car printOfCarWithName:car->_name wheels:car->_wheels color:car->_color national:car->_national speed:car->_speed]; MobilePhone *iphone = [[MobilePhone alloc]init];
iphone->_name = @"魅族Max5";
iphone->_national = @"中国";
iphone->_datatime = @"2015-06-15";
iphone->_price = ;
iphone->size = @"15*20*5";
[iphone printOfMobilePhineWithName:iphone->_name national:iphone->_national datatime:iphone->_datatime price:iphone->_price size:iphone->size]; } return ;
}

知识块

内存管理: 有对一个对象的的使用权称为“拥有”(own)这个对象,对象的拥有着者个数至少为1,对象才得以存在,否则他应被立即销毁。

判断一个对象对另一个对象有使用权限:1当你对对象做了 alloc 、 copy 、retain 等操作之后,你才拥有他的所有权     2 当你不再需要这个对象的时候,就要释放对他的所有权    3.你不可能对你没有所有权的对象做释放工作.

OC:点语法的更多相关文章

  1. 【OC基础语法考试】

    OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...

  2. OC点语法和变量作用域

    OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: #import <Foundation/Foundation.h> @interface Person : ...

  3. 李洪强iOS开发之OC点语法和变量作用域

    OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Per ...

  4. [Objective-c 基础 - 2.2] OC弱语法、类方法

    A.OC弱语法 1.在运行的时候才会检查方法的声明和实现 2.没有声明只有实现的方法也能正常运行,只要在调用之前定义即可 3.类的声明必须存在,否则会出现运行时错误   B.类方法 1.是类名调用的方 ...

  5. 【Objective-C】1.oc点语法

    在Java中,我们可以通过"对象名.成员变量名"来访问对象的公共成员变量,这个就称为"点语法".比如: 1.在Student类的第2行定义了一个公共的成员变量a ...

  6. IOS基础之 (一) OC基础语法

    一 OC语法 1.关键字 基本上所有关键字都是以@开头,比如: @interface , @implementation, @end, @public, @protected, @private 2. ...

  7. iOS - OC 面向对象语法

    1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...

  8. OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

    1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如 ...

  9. OC - 4.OC核心语法

    一.点语法 1> 基本使用 点语法本质上是set方法/get方法的调用 2> 使用注意 若出现在赋值操作符的右边,在执行时会转换成get方法 若出现在赋值操作符的左边,在执行时会转换成se ...

  10. iOS开发——OC篇&OC高级语法

    iOS开发高级语法之分类,拓展,协议,代码块详解 一:分类 什么是分类Category? 分类就是类的补充和扩展部分 补充和扩展的每个部分就是分类 分类本质上是类的一部分 分类的定义 分类也是以代码的 ...

随机推荐

  1. maven的settings.xml详细说明

    转自:http://writeblog.csdn.net/ <?xml version="1.0" encoding="UTF-8"?> <s ...

  2. 关于Latent Dirichlet Allocation

    今天,也没出去,晚上宿舍没有人,自己思考了下人生,毕设还是大事,觉得现在有必要把LDA从前往后彻彻底底的读一遍了,因为现在的感觉就是什么都知道一点皮毛,但是理解的都不深,LDA好像(恩,相当不好)现在 ...

  3. (一)线性回归与特征归一化(feature scaling)

    线性回归是一种回归分析技术,回归分析本质上就是一个函数估计的问题(函数估计包括参数估计和非参数估计),就是找出因变量和自变量之间的因果关系.回归分析的因变量是应该是连续变量,若因变量为离散变量,则问题 ...

  4. git常用知识整理

    分布式和集中版本控制的区别 分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因 ...

  5. jQuery Mobile中文手册:开发入门

    jQuery Mobile 以“Write Less, Do More”作为目标,为所有的主流移动操作系统平台提供了高度统一的 UI 框架:jQuery 的移动框架可以让你为所有流行的移动平台设计一个 ...

  6. MySQL · 引擎特性 · InnoDB 崩溃恢复过程

    MySQL · 引擎特性 · InnoDB 崩溃恢复过程 在前面两期月报中,我们详细介绍了 InnoDB redo log 和 undo log 的相关知识,本文将介绍 InnoDB 在崩溃恢复时的主 ...

  7. Struts2配置细节

    struts.xml中 action中配置 如果是返回到网页则 /AA/XX.jsp 如果是返回到action则看namespace然后传参数,如果是同一个namespace则直接写上返回的actio ...

  8. Pitcher Rotation

    题意: n个人m个对手给出每个人能战胜每个敌人的概率,现在有g个比赛,每个人赛完后要休息4天(可重复用),求能获得胜利的最大期望个数. 分析: 因为只有每个人5天就能用一次,所以对于每个人来说,只有得 ...

  9. 【转】为drupal初学者准备的12个精品课程

    下面是一些网上免费的drupal教程,这些教程将对初学者和那些从别的CMS转向drupal的开发者非常有帮助.初级教程 1.在开始用drupal之前,你要知道一些基本的东西,内容很简单,但有些还是值得 ...

  10. php动态生成一个xml文件供swf调用

    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdo ...