ios笔记--OC语法基础知识笔记

1. Objective-C是基于C语言的,所以完全兼容C语言,可以开发Mac OS X平台和iOS平台的应用程序。

2. OC中并没有""的概念,也就是没有命名空间机制,使用前缀可以有效的防止类名冲突。比如NSString(OC中的字符串类)NSArray(OC的数组类),它们的前缀都是NS

3. 为了防止跟C语言、C++关键字冲突,OC的关键字都以@开头。甚至字符串都是以@开头的,比如@"Hello"OC中的字符串,而"Hello"则是C语言中的字符串。

4. Objective-C和Java,C的相似点

(1)OC的nil 相当于java的null

(2)OC的self相当于java的this

(3)%i:相当于%d,表示输出整型。

5.#import是一个预处理指令,作用跟C语言的#include类似,都是 包含(拷贝)某个文件的内容 到 预处理指令所在的位置。第1行的#import <Foundation/Foundation.h>表示包含Foundation框架中的Foundation.h文件。Foundation框架中包含了很多常用的类和函数,比如字符串处理类NSString、日志输出函数NSLog。它的重要程度相当于Java中的java.lang.*

6、类

OC中,一般用2个文件来描述一个类:

(1) .h:类的声明文件,只是声明一下成员变量和方法,不作具体的实现。使用关键字@interface@end

(2) .m:类的实现文件,用于实现.h中声明的方法。使用关键字@implementation@end

7、方法,方法的声明和实现,都必须以 + 或者 - 开头

+:表示类方法(静态方法)。

-:表示对象方法(动态方法)。

8、成员变量

(1)@public :全局都可以访问的变量。

(2)@protected:只能在类内部和子类中访问的变量。如果成员变量什么作用域都不写,OC默认作用域是@protected

(3)@private:只能在类内部访问的变量。c++默认的是private

9、创建对象

创建原理:我们在创建一个对象时,首先要给对象分配一块存储空间,然后调用构造方法进行初始化。

实现举例:

Book *book =[Book alloc] //Book这个类分配一块内存,OC的方法调用是用中括号[],括号里面先写方法的调用者Book,然后再写要调用的方法名alloc

book = [book init]; //调用Book对象的构造方法init进行初始化 

上面两步也可以连起来写成:Book *book =[[Book alloc] init];

10、销毁对象

使用原因:因为OCjava不一样,java有自动垃圾回收机制,所以java开发根本不用考虑对象的生命周期,用完了系统会自动回收,但是OC不一样,OC需要开发者自己回收内存,因此,当不再使用某个对象时,需要调用对象的release方法释放掉此对象。代码如下:

[book release];//释放对象的内存

11、点语法

(1)概念:在Java中,我们可以通过"对象名.成员变量名"来访问对象的公共成员变量,这个就称为"点语法"OC中,访问对象的成员变量方式为:Book->prict;

(2)点语法举例如下:

Book.h声明类文件

#include<Foundation/Foundation.h>

//放要声明的变量

@interface Book : NSObject

{

int price;//不写修饰符默认作用域是@protected

}

-(void) setPrice : (int) newPrice;//声明setPrice:方法

-(int) price; //声明price方法

@end

 

Book.m实现类文件

#include<Foundation/Foundation.h>

@implementation Book

-(void) setPrice : (int) newPrice

{

price =newPrice;

}

 

-(int) price

{

return price;

}

@end

 

main.m文件

#include<Foundation/Foundation.h>

#include”Book.h”//要使用Book类的方法就要导入该文件

 

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

{

@autoreleasepool

{

Book *book = [[Book alloc] init];  //创建一个book对象

book.price = 10;  //调用set方法,代码相当于[book setPrice:10]

int price = book.price;  //调用get方法,代码相当于[book getPrice]

NSLog(@”price = %i”,price);

[book release];  //程序结束,释放book对象占用的内存

}

return 0;

}

12、构造方法

(1)概念:默认的构造方法,也就是init方法,它是不接收任何参数的。在实际开发中,为了方便,会经常自定义构造方法。

(2)实现步骤:

(3)1.Book.h文件中添加方法声明

#include<Foundation/Foundation.h>

@interface 

{

  int _price;

}

- (id)initWithBook:(int)price;//id可以代表任何OC对象,这个构造方法接收一个int类型的参数,顺便设置成员变量_book的值。

@end

2.在Student.m文件中实现构造方法

说明:如果在.m文件中的方法没有在.h中声明,那么该方法是私有方法。

#include<Foundation/Foundation.h>

@implementation

-(id)initWithPrice(int)price

{

self =[super init];//调用父类的构造方法返回一个初始化好的Book对象

if(self!=nil) //如果初始化成功则进行赋值

{

_price= price; //给成员变量赋值

}

return self; //返回初始化并赋值过后的self

}

@end

3.main.m文件中调用构造方法

#include<Foundation/Foundation.h>

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

{

Book *book =[Book initWithPrice:10];//初始化一个book对象

NSLog(@%@,book); //输出book对象

[book release];//释放book 对象

return 0;

}

输出结果为:2014-06-19 14:46:49.896 构造方法[492:303] <Book: 0x100109910>

由以上输出结果可以看出,输出的对象只是对象的内存地址。我们可以通过重写description的方法修改它的输出格式。

description方法:该方法是父类打印一个对象的方法,可以通过重写该方法修改对象输出方式。

Book.m文件中重写description方法。代码如下:

-(NSString *) description

{

//调用了NSString这个类的静态方法stringWithFormat初始化一个字符串对

//象,并返回这个字符串

return [NSString stringWithFormat:@”price=%i”,_price];

}

再次运行main.m文件,输出结果为:

输出结果为:2014-06-19 14:46:49.896 构造方法[492:303] price=10

13objective_C中用@interface和 @property 方式声明变量的区别

1.在  @interface :NSObject{} 的括号中声明变量,当然NSObject 是指一个父类,也可以是其他的。

2.另外一种是直接在 @interface : NSObject{}括号之后,用 @property 去定义一个变量。

提示:你可以单独在@interface中定义变量,而不用@property定义;也可以只用@property去定义,而不在@interface中定义,当然用了@property去定义,一般要在.m文件中用@synthsize去合成相应的settergetter方法。否则会得到一个警告。

那这两种方式有什么区别呢。

1. 只在@interface中定义变量的话,你所定义的变量只能在当前的类中访问,在其他类中是访问不了的;而用@property声明的变量可以在外部访问。

2.用了@property去声明的变量,可以使用“self.变量名”的方式去读写变量。而用@interface的方式就不可以。

14、OC注释

#pragma mark  标签:给方法标明一注释,可以快速定位。

#pragma mark -标签:带下划算加上标签即给注释分组,给注释分类,以便查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值