Objective-C学习1

首先,我要说的是,想要学好Objective-C(下面简称OC)就必需要有C语言的基础。由于OC是C语言的一个超集;OC是面向对象的语言.[C语言是面向过程的语言],OC中的好多语法和C语言中类似。OC也全然能够兼容C语言,实现混编;所以想学好OC,最好是有C语言的基础。(假设有C++的基础或者思想,就更能学好OC)

1.OC中文件都是以.m的文件存储的。声明文件同c一样也是.h文件。

个人提醒:无论是C还是OC最好都要用驼峰标识来些标识符。

创建类:

类名:首字母一般都是大写

定义类的步骤:

1,定义类名;2。编写类的属性--->(实例变量) ;3,编写类的行为--->方法;

提示:一般类名最好与文件名称一样,方便程序猿们的理解;一般类下的属性声明 用下划线开头。原因是这里声明的是全局变量,方便与局部变量中的关键词重名;这里仅仅能声明变量。不能赋值;

方法的定义:

-(void)method : (int) arguments;

-(方法类型:实例方法。也叫对象方法)

+(类方法)

(void)返回值;没有返回值是void;

method 方法名;

(int《类型》):參数类型括起来。

arguments:參数名。

-------

方法定义分为:不带參数:如-(void)shoping;

带一个參数:void(shoping):(float)price;

带两个參数:void(shopping):(float)price :(float)weight;

-----------------------------

方法的实现:

在.m中@implementation

//在这里写方法的实现;

-(void)shopping:(float)price{

NSLog(@"我正在shopping!");

}

@end;

然后在main函数中应用

#import "Person.h"

int main(){

//通过类名创建对象;

//Person *person = [Person alloc];

//person = [person init];

//alloc 是在内存中申请一块空间区域,来存放此对象的信息。

//下边调用init方法初始化一些默认数据;

Person *person = [[Person alloc] init];//将两个步骤嵌套在一起;

//左边是【通过类类型】声明变量;右边是创建对象。

}

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//上节:定义类;用类创建对象;

-——————————————

另一种创建对象方法:

Person * person2 =[Person new];(OC中不建议使用这样的方式)

一般使用这样的方式:Person *person1=[[Person alloc] init];

_______________________

调对象里的方法。

-开头的为:实例方法【或叫对象方法】。    +:类方法;

-开头的必须有对象。(如person1)

在main中运行到此↓:

[person1 shopping:200];//200为參数

就会进入到shopping函数中;

//这就是调用了这个shopping这个实例方法;实例方法必须有对象才干调用;

//通过类能创建非常多方法出来;

----------------------------------

创建完对象person1;

设置名字和年龄;

没有办法直接设置名字和方法,仅仅能通过方法来设置属性

设置名字方法:-(void)setName:(NSString *)name;//方法描写叙述:设置属性 name;

实现:在.m文件里:

-(void)setName:(NSString *)name{

_name = name;

}

----------------------------------

再回到main中设置名字:

[person1 setName:@"张三"];//把张三字符串传入到name函数中。name再把张三传给_name;

-----------------------------------

属性:又叫成员变量,又叫全局变量。又叫实例变量。全局变量全部的方法中都能用;

————————————————

 专门设置属性的方法:叫做设置器方法或者叫set方法。

在外部获取属性的方法:叫做获取器方法(get方法);有返回值。

-----------------------------------

比方-(NSString *)name;

-(NSInteger)age;

实现:

-(NSString *)name{

return _name;

}

-(NSInteger)age{

return _age;

}

调用:NSString *name1 = [person1 name]

+++++++++++++++++++++++++++++++++++++++++++++

之前都是一个參数的方法;今天学多个參数的方法

—————————————————

-(void)setName:(NSString *)name setAge:(NSInteger *)age;//《方法名有两个部分:setName和setAge》;setAge在这里能够省掉(可是不推荐用)。

实现:-(void)setName:(NSString *)name setAge:(NSInteger *)age{

_name = name;

_age = age;

}//一般不会这样定义。这里仅仅是用于演示。一般都是一个变量定义一个设置方法

调用:[person1 setName:@"张三" setAge:22];【对象调用方法!】

————————————————

【在.m和.h间切换】command+cotrl+上下键;tab键能补全我们为写完的keyword或标识符;

————————————————

方法类型:-对象方法, +类方法。

+:类方法

用类名去调方法;称之为类方法。

方法描写叙述:是用于创建一个Person对象的。

定义类方法:+(Person *)newPerson;

实现类方法:+(Person *)newPerson{

Person *p = [[Person alloc] init];

//这里能够初始化一些变量

//[p setName:@"zhangsan" setAge:22]

}

调用类:Person *person3 = [Person newPerson];

--------------------------------

假设没有创建对象,就不能使用属性;

实例对象都没有,哪儿来的属性?

要想使用,必需要有对象;

//在类方法中无法訪问属性;

属性:谁调的方法 属性就属于谁;

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

补充对象的创建。

创建一个对象的时候,里面的成员变量并没有初始化。那它们默认是什么呢?

@interface Person :NSObject

int _Age;

//系统默觉得其初始化为:Byte:0;short:0;int:0;long 0L。char:\u0000‘ ;float:0.0F;double:0.0D;Bollean:FALSE;全部指针:nil。

@end

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

时间: 2024-08-26 14:16:15

Objective-C学习1的相关文章

Objective - C学习笔记:UIView的使用方法

1.1 - (void)layoutSubviews; * 当一个控件的frame发生改变的时候就会自动调用 * 一般在这里布局内部的子控件(设置子控件的frame) * 一定要调用super的layoutSubviews方法 1.2 - (void)didMoveToSuperview; * 当一个控件被添加到父控件中就会调用 1.3 - (void)willMoveToSuperview:(UIView *)newSuperview; * 当一个控件即将被添加到父控件中会调用 @interf

Objective - C 学习笔记:UIPickerView 和 UIDatePicker的基本使用

1.UIPickerView 1.1. UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id<UIPickerViewDataSource> dataSource; // 代理(用来告诉UIPickerView每1列的每1行显示什么内容,监听UIPickerView的选择) @property(nonatomic,assign) id<UIPickerViewDelegate>

Objective - C 学习笔记:程序启动原理

1.Info.plist常见的设置 * 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 * 在旧版本Xcode创建的工程中,这个配置文件的名字就叫“Info.plist” * 项目中其他Plist文件不能带有“Info”这个字眼,不然会被错认为是传说中非常重要的“Info.plist” * 项目中还有一个InfoPlist.strings的文件,跟Info.plist文件的本地化相关

objective - C学习笔记: tableView的刷新

1: 数据刷新的总体步骤 1.1: 修改模型数据 1.2: 刷新表格(刷新界面) 2: 刷新表格的方法 // 全局刷新(每一行都会重新刷新) - (void)reloadData; // 局部刷新(使用前提: 刷新前后, 模型数据的个数不变) - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; // 局部删除(使用前提: 模型数据减少的个

Objective - C学习笔记:控制器的管理

1. 如何创建一个控制器 1.1. 控制器常见的创建方式有以下几种 //1.1.1:通过storyboard创建 //1.1.2:直接创建 YHViewController *viewController = [[YHViewController alloc] init]; //1.1.3:指定xib文件来创建 YHViewController *viewController= [[YHViewController alloc] initWithNibName:@"YHViewControlle

Objective - C 学习笔记:消息机制的原理与使用

1.通知中心(NSNotificationCenter) 1.1.每一个应用程序都有一个通知中心(NSNotificationCenter*)实例,专门负责协助不同对象之间的消息通信 1.2.这就是观察者模式(Observer),任何一个对象都可以向通知中心发布通知(NSNotification*),描述自己在做什么.其他感兴趣的对象(Observer观察者)可以申请在某个特定通知发布时(或在某个特定的对象发布通知时)收到这个通知 2.通知(NSNotification) 2.1.一个完整的通知

Objective - C 学习笔记:程序启动的完整过程

1. main函数 2. UIApplicationMain * 创建UIApplication对象 * 创建UIApplication的delegate对象 3.1 delegate代理开始处理(监听)系统事件  (没有storyboard) * 程序启动完毕的时候, 就会调用代理的application:didFinishLaunchingWithOptions:方法 * 在application:didFinishLaunchingWithOptions:中创建UIWindow * 创建和

Objective - C 学习笔记:监听文本框TextField的文字改变

* 一个文本输入框的文字发生改变时,文本输入框会发出一个UITextFieldTextDidChangeNotification通知 * 因此通过监听通知来监听文本输入框的文字改变 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:textField]; // textField

Objective - C学习 (Foundation框架)-- 02类

NSString NSMutableStringNSArray NSMutableArrayNSSet NSMutableSetNSDictionary NSMutableDictionaryNSDateNSObject C -> OC字符串NSString *s = [[NSString alloc] initWithUTF8String:"jake"]; OC -> Cconst char *cs = [s UTF8String];NSUTF8StringEncodin

Objective - C学习 (Foundation框架)-- 01结构体

NSRange (location length) "I love oc"NSRange r = NSMakeRange(2,4) NSString *str = @"i love you"; NSRange range = [str rangeofString:@"love"]; NSLog(@"loc = %ld, length = %ld",range.location, range.length); 找不到length