精华内容
下载资源
问答
  • OC学习:OC中的协议

    2015-08-10 14:21:37
    OC学习:OC中的协议 协议就像是接口,多个不同的类继承了协议,也就继承了这些协议的接口(方法)。

    协议就像是接口,多个不同的类继承了协议,也就继承了这些协议的接口(方法)。
    定义一个协议:

    @protocol ClassAProtocol <NSObject>

    @required
    //此部分定义的是遵循协议的类所必须实现的
    @optional
    //此部分定义的不是遵循协议的类所必须实现的
    @end

    ClassAProtocol 是协议的名称
    <NSObject> 遵循NSObject协议

    协议定义在.h文件中,可以在单一的头文件,也可以是在声明一个类的时候,声明一个与此类有关的协议,协议的具体内容在遵循此协议的类的.m文件中实现,实现的协议中必须实现的方法名,但是执行的方法内容大多数情况下都是不一样的。

    @interface ClassC : NSObject <ClassAProtocol,ClassBProtocol>

    @end

    ClassC : NSObject 类目继承于父类 NSObject
    <ClassAProtocol,ClassBProtocol> 遵循两个协议

    -(类型) 方法名:(参数类型<遵循协议名> ) 参数名,方法中要求参数要遵循某种协议。
    -(void) printfClass:(Class *<ClassBProtocol>) c;
    @property (nonatomic,assign) id<ClassBProtocol> class;
    属性class遵循了协议ClassBProtocol。

    如我们建立一个类ClassA,同时定义一种ClassAProtocol协议

     #import <Foundation/Foundation.h>
    //类的正常声明
    @interface ClassA : NSObject
    @property (nonatomic,assign) NSInteger ID;
    @end
    //在ClassA.h文件中定下协议,默认情况下是required
    @protocol ClassAProtocol <NSObject>
    @property (nonatomic,strong) ClassA *aClass;
    -(void) sayHi;
    @end

    如我们在建立一个类ClassB,同时定义一种ClassAProtocol协议

    #import <Foundation/Foundation.h>
    @interface ClassB : NSObject
    @property (nonatomic,strong) NSString *name;
    @end
    
    //在ClassB.h中定下协议ClassBProtocol
    @protocol ClassBProtocol <NSObject>
    @property (nonatomic,strong) ClassB *bClass;
    @end

    如我们在建立一个类ClassC,同时ClassC遵循了两种协议,所有遵循协议的类都必须实现协议中 @required的部分。方法的实现根据功能要求定,大多数是不一样的。

    #import <Foundation/Foundation.h>
    #import "ClassA.h"
    #import "ClassB.h"
    
    //在ClassC 中实现协议
    @interface ClassC : NSObject <ClassAProtocol,ClassBProtocol>
    -(id) init;
    @end
    #import "ClassC.h"
    
    //在ClassC.m文件中实现协议方法
    @implementation ClassC
    //实现两个协议的方法:@property (nonatomic,strong) ……
    @synthesize aClass =_classA,bClass = _classB;
    //实现ClassA的方法
    -(void) sayHi {
        NSLog(@"Hi");
    }
    
    @end
    展开全文
  • OC 学习总结

    千次阅读 2015-08-27 08:52:23
    >-dealloc和alloc相反 当对象的引用计数为0的时候,由对象自动调用。 -(void)dealloc { [super dealloc]; } 2.释放池 >autorelease的使用 通过autoreleasepool控制 autorelease对象的释放 向一个对象发送autorelease...

    第一节 类和对象

    1.面向对象和面向过程的区别

    >面向过程:分析解决问题的步骤特点,实现函数,依次调用函数。

    >面向对象:分析某问题需要参与的对象,各个对象的作用,多个对象协作完成任务。

    2.类和对象

    >类和对象是面向对象的核心,定义类,创建对象,使用对象。

    >类:具有相同的特征和行为的事物的抽象

    >类和对象的关系

    1)对象是类的实例

    2)类是对象的类型

    >定义类包括接口部分和实现部分

    接口部分:@interface  @end 对外声明类的特征和行为

    实现部分:@implementation    @end 对内实现行为(内部的具体实现)

    >创建对象:

    1)分配内存空间alloc

    2)初始化init

    >实例变量区分三度:@public @private @protected

    public修饰的实例变量,可以直接使用“->”访问


    第二节 实例变量可见度,方法

    1.可见度

    @public 共有的 实例变量可以在累的外部和内部操作(暴露类内部的细节,不符合封装原则

    @protected 默认的 实例变量只能在该类和其子类内操作

    @private 实例对象只能在该类内访问 内部指的是相应类的@implementation和@end内。

    2.方法

    1)类方法 方法类型标识符是+号 只能类使用

    2)实例方法 方法类型标识符是-号 只能对象使用

    注意:类中不能出现同名方法。

           “:”,标识参数,不能省略,有冒号,必须有参数。

    >赋值和取值方法 setter和getter方法(成对存在)

    >方法使用

    消息发送机制:给类的对象发送方法的消息 类的对象接收到消息 然后找到该方法 并执行

    >自定义初始化方法

    -(id)init;只能给实例变量初始化,不灵活。

    -(id)initWIthName:(NSString *)name;自定义初始化方法,根据需求定义初始化方法。

    >导入头文件

    导入头文件中的类内容到当前的类可使用@class 类名;

    导入头文件中的方法到当前的类中使用#import“类名”或者<类名>

         “  ”代表着导入自定义类

        < >代表着导入类库中的头文件

    第三节 继承、初始化方法、便利构造器

    1.继承

    >上层是父类 下层是子类

    单向性:单向的,不能相互继承

    传递性:A继承于B B继承于C,A具有B和C全部的特征和行为 (子类能继承父类的全部特征和行为)

    >继承优点:既能保证类的完整,又能简化代码。

    >特点:

    1)OC中只允许单继承

    2)没有父类的类成为根类,OC中的根类是NSObject(祖宗)

    3)继承的内容:所有的实例变量和方法

    4)如果子类不满意父类方法的实现,可以重写父类的方法。

    2.初始化方法

    >主要作用:为某些实力变量赋初值

    初始化方法在对象的整个生命周期里只使用一次。

    -(id)initWithName

    {

       self=[super init];//给super发送init消息:即执行父类中实现的方法

       if(self)

      {

        _name=name;//初始化设置

      }

    return self;//返回初始化完成的对象

    }

    >特征:

    1)初始化方法是实例方法(对象调用的方法)

    2)id或者instancetype类型的返回值

    3)以init开头

    4)可以带0到多个参数

    5)内部实现:先执行super的初始化方法,再初始化自身变量,return self;

    3.便利构造器

    1)封装了对象的创建过程

    2)是一个类方法

    3)可以有0到多个参数

    4)内部实现:封装了alloc和初始化方法,使用起来更简洁。

    >声明和实现便利构造器

    +(id)personWithName:(NSString *)name

    {

    Person *p=[[Person alloc]initWithName:name];//封装alloc和初始化方法

    return p;//返回本类型的实例

    }

    >使用便利构造器创建对象

    Person *p=[Person personWithName:@"王小二"];

    第四节 NSString NSArray NSNumber

    1.NSString

    >创建字符串对象

    >字符串的长度

    >字符串的范围

    NSRange是个结构体对象

    >字符串的拼接,分割,替换

    >字符串的比较,识别

    >>>可变字符串NSMutableString

    1)appendFormat拼接

    2)insertString插入

    3)deleteCHaractersInRange删除

    4)setString替换

    2.NSArray

    >获取元素个数

    >获取第一个元素

    >获取最后一个元素

    >>>NSMutableArray可变数组

    1)addObject添加

    2)insertObject插入

    3)removeObjectAtIndex:1删除在index 1 上的元素

    4)removeAllObjects删除全部

    5)replaceObjectAtIndex:1 withObject:@“A” 替换

    3.NSNumbe

    常用方法

    +numberWithInt

    +numberWIthDouble

    -intValue

    -doublevalue

    NSValue的常用方法

    +valueWIthRange

    +valueWIthPointer

    -rangeValue

    -pointerValue

    第五节 集、字典、数组排序

    1.集

    >特点:

    1)与数学中的集合一样,集合中的元素唯一。

    2)存储的元素是无序的

    3)存储元素必须是对象类型

    NSSet:不可变集合 

    >方法:

    [set count];//打印集合的个数

    [set anyObject];//随机获取一个元素

    BOOL a=[set containObject:@"a"];//判断集合中是否包含某个元素

    NSArray *array=[set allObjects];//将集合中的元素添加到数组中

    NSMutableSet:可变集合

    >方法

    NSMutableSet *set1=[NSMutableSet set];//新建一个集合1

    [set1 addObjectsFromArray:array];//将数组对象添加到集合中

    [set1 addObject:@"t"];//添加字符串对象到集合中

    [set1 removeObject:@"a"];//从集合中删除一个对象

    [set1 removeAllObjects];//从集合中删除全部对象

    NSMutableSet *set2=[NSMutableSet set];//新建一个集合2

    [set2 setSet:set1]//将set2清空,再将set1添加到set2中 将集合对象添加到集合中

    NSMutableSet *set3=[NSMutableSet set];//新建一个集合3

    [set3 addObjectsFromArray:array];//将数组对象添加到集合中

    2.字典

    >字典:用于保存具有映射关系(key-value对)数据的集合

    >字典是存储 key-value对的容器

    >特点:

    1)与数组不同,字典靠key存取元素。

    2)存储的元素是无序的

    3)key不能重复,value必须是对象。

    4)键值对在字典中是无序存储的

    5)字典分:不可变字典(NSDictionary)和可变字典(NSMutableDictionary)

    NSDictionary:字典一旦创建,键值对就是不可更改,不可添加,不可删除,仅能读取key或者value

    NSMutableDIctionary:可变字典 NSDictionary子类 可以对管理的键值对进行增删改

    3.数组排序

    >枚举类型:

    for (<#type *object#> in <#collection#>) {
            <#statements#>
        }

    1>object是遍历得到的元素对象

    2>collection是集合类型的对象:数组,字典,集合。

    特点:

    1)数组枚举得到数组中的元素对象

    2)字典枚举得到字典中的key值

    3)集合枚举得到集合中的元素对象

    数组排序:

    [array exchangeObjectAtIndex:j  withObjectAtIndex:j+1];

    [array count];


    [array sortedArrayUsingSelector:<#(SEL)#>];

    [mutableArray sortUsingSelector:<#(SEL)#>];

    @selector为了获取方法名,数组中元素的方法。


    NSCountedSet *set4=[NSCountedSet setWithObjects:@"金科",@"金科",@"王",nil];

    NSUInteger i=[set4 countForObject:@"金科"];//

    第六节 Block 高级数组

    1.Block

    声明Block

    int(^myBlock)(int,int);

    >int 返回值

    >^myBlock中^脱字符:标识这后面的sumBlock是一个Block变量

    >int,int参数类型

    >分为四种:

    有返回值,有参数 int(^myBlock)(int,int)=^(int a,int b){};

    无返回值,有参数void(^myBlock)(int,int)=^(int a,int b){};

    有返回值,无参数int(^myBlock)(void)=^(void){};

    无返回值,无参数void(^myBlock)(void)=^(void){};

    >局部变量和全局变量

    __block int num2=7;

    用__block修饰的局部变量(Block外)的可以在Block修改,相当于把要修改的数值拷贝到Block中。

    >Block方法排序

    NSMutableArray *array=[[NSmutableArray alloc]init];

    [array sortUsingComparator:NSComparisonResult(Student *obj1,Student *obj2){

    return [[obj1 name]compare:[obj2 name]];//升序 在return后面加个-号就是降序了

    }];

    第七节 类目、延展、协议

    1.类目

    类目就是为已存在的类添加新的方法,不能添加实例变量。

    @interface NSString(sayHi)

    -(void)sayHello;

    @end

    >sayHi  是类目名

    >sayHello 是新的方法

    >NSString 是已存在的类

    #import后主函数main可以直接调用sayHello方法

    添加变量或重载原始类的方法,可以通过继承创建子类实现。

    2.延展

    >作用:定义自己的私有方法

    >直接放到需要扩展的类的.m文件中即可。

    #import"Person.h"

    @interface Person(extension)

    -(void)sayHi;//Student类创建一个私有的方法

    @end


    @implementation Student

    -(void)hello

    {

    [self sayHi];

    }

    -(void)sayHi;

    {

    NSLog(@"你好");

    }

    @end

    3.协议

    >协议声明方法,协议不必实现,该方法可以被其他类实现。

    >协议不是类,是一个接口。

    第八节属性

    1.属性

    >属性是OC2.0定义的语法,为实例变量提供了setter和getter方法的默认实现。

    >能再一定程度上简化程序代码,并且增加了实例变量的访问安全性。

    >属性:@property 声明属性

    例如:@property NSString* name;

    相当于@interface中声明了两个方法。

    2.属性的属性

    >目的:简化程序员编码

    >属性的属性attribute分三类

    1)读写性控制 randly readwrite(默认设置)

    2)原子性控制nonatomic(通常设置)atomic(默认设置)

    3)语义设置 assign(非对象类型 没有*号就是) retain(对象类型 加*的) copy(对象类型 必须遵守NSCopying协议)

    3.点语法

    >提供了一种便捷的属性访问方式

    >符合系统默认setter getter书写格式的方法都可以使用点语法。

    >[person setName:"Zhangsan"];

    等价于person.name=@"Zhangsan";

    NSString *name=[person name];

    等价于NSString *name=person name;

    4.KVC

    >key-value-coding 键值编码

    >key标识实例变量

    >value实例变量对应的值

    >修改值

    setValue:  forKey:

    setValue: forKeyPah:

    setValue: forUndefinedKey;

    setValue: forKwyWithDictionary:

    >获取值

    valueForKey:

    valueForKeyPath:

    valueForUndefinedKey:

    >当key不存在时,会执行setValue:  forUndefinedKey: 系统默认实现是抛出一个异常

    第九节 内存管理初级

    1.内存问题

    >90%以上的闪退原因是内存问题

    >内存问题体现在2个方面:内存溢出(使用内存超出内存上限)和野指针异常(主要原因)(对象内存空间已经被系统回收仍然使用,指针操作这块内存)

    >内存管理方式:

    1)垃圾回收:系统自动完成垃圾回收

    2)MRC:(Manual Reference Count)手动 内存管理机制是:引用计数

    3)ARC:(Auto Reference Count)自动 基于MRC的

    >引用基数:当一个新的引用指向对象时引用计数器递增,当去掉一个引用时,引用计数到0时,该对象就释放占有的资源。

    >影响引用计数的方法

    +alloc 开辟内存空间,让被开辟的内存空间的引用计数变为1

    -retain 引用计数加1

    -copy

    -release 引用基数-1 如果本来为1,release之后变为0 内存被系统回收

    -autorelease 未来的某一时刻引用计数-1

    >-dealloc和alloc相反 当对象的引用计数为0的时候,由对象自动调用。

    -(void)dealloc

    {

    [super dealloc];

    }

    2.释放池

    >autorelease的使用

    通过autoreleasepool控制 autorelease对象的释放

    向一个对象发送autorelease消息,这个对象何时释放,取决于autoreleasepool。

    >创建释放池

    NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];

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

    [p autorelease];//必须写在创建和销毁中间

    >销毁释放池

    [pool release];

    越晚autorelease的对象越早收到release消息。

    3.深拷贝和浅拷贝

    >深拷贝:

    -(id)copyWithZone:(NSZone*)zone{

    Person *p=[[Person allocWithZone:zone]init];

    p.age=self.age;

    p.name=slef.age;

    return p;

    }

    >浅拷贝:

    -(id)copyWithZone:(NSZone*)zone{

    return[self retain];

    }

    >区别:

    深拷贝拷贝的是对象

    但是浅拷贝拷贝的是指针。

    第十节 内存管理高级

    略。

    展开全文
  • OC学习笔记之OC内存管理

    内存管理入门

    1.为什么进行内存管理


      移动设备的内存有限,一般在超过20M的时候回告警,45M的时候回再次告警,110M的时候回自动程序崩溃,保证其他程序的正常运行。--------告警是告诉程序回收一些不在使用的对象和变量等,否则程序会崩溃

    2.内存管理的范围

    内存管理的范围及计数引用

    内存管理的范围:
        所有继承自NSObject对象的内存管理

    对象的所有权及引用计数:
        1.一个对象可以有一个或者多个所有者。当该对象的所有者的数目为0的时候,该对象才会被被释放
        2.在每个对象的内部,都有一个8个字节的存储空间,该空间用来存储引用计数器retaincount。
        3.引用计数器的作用:判断对象要不要回收的依据。如果retaincount是0的话就回收空间。存在一种例外----对象值
           为nil时,引用计数为0,但是不回收空间
        4.引用计数器的操作
           (1)retain消息:使retaincount+1,该方法返回对象本身
           (2)release消息:使retaincount-1,
           (3)retainCount消息:获得对象当前的引用计数器的值
           
    对象的销毁:
        当对象的引用计数器的值为0时,该对象销毁,其占用的内存被系统回收。
        当对象被销毁时,系统自动向对象发送一条dealloc消息,释放资源---------一般会重写dealloc方法,但是,重写
             dealloc方法必须调用[supser dealloc],并且放在代码块的最后调用
        一旦对象被回收,那么他所占据的存储空间不再可用,否则出现野指针错误

    内存管理的分类:
        1.MannulReference Counting----------MRC(手动管理),与ARC不同的时,空间的回收由程序猿手动回收。
        2.automatic reference counting---------ARC(自动管理)
        3.garbage collection---------垃圾回收,IOS不支持


    指针的内存管理

    单个对象野指针问题产生的原因:
         代码段:
             Dog *byd = [Dog new];//retaincount=1
             [byd eat];
             [byd release];                //retaincount=0
             [byd eat];                     //按道理说是不能执行的,引用空间已经被释放了。但是可以运行呢
         原因:当rataincount=0的时候,系统释放对象的空间,所谓的释放就是说,其他的对象或者程序可以
                  使用这些内存。但是如果,没有程序占用这些内存,[byd eat]还是可以使用得(OC并没有那么严谨);
                  如果一个对象被释放了,但是释放之后,还是被引用了,那么这就是僵尸对象。


    解决办法:
         开启僵尸对象检测

       

    nil,nil,NULL,NSnull的简单接受
        nil----用于对象,如果对象没有被赋值,那么他就是nil。
        Nil---给类对象赋值。
        NULL----指针为空。
        NSnull----适用于不能使用nil的场合,例如数组。


    单个对象避免使用僵尸对象的方法:
        [d release];                                         [d release];
        d = nil;-------------------相当于    d = nil;
        [d eat];                                               [nil eat];
        对nil的任何操作都是无效的。

    单个对象内存泄露的情况分析:
        1、对象创建完成之后,没有release
        2、没有遵守内存管理原则
              谁申请的谁release
        3、nil的不当使用
             Dog *d =[[Dog allloc] init];
             d = nil;
             [d eat];
             [d release];
        4、Dog *d =[[Dog allloc] init]
             [d method:d];
             其中method:d方法中使得d的retain+1;


    多对象出现野指针问题的原因分析:
        对象A调用对象B的方法,当对象B释放之后,A并没有感知,依旧会调用B的方法,但是B已经不存在了。

    展开全文
  • OC学习笔记

    2015-04-04 14:40:18
    一、OC简介 > C语言的基础上,增加了一层最小的面向对象语法 > 完全兼容C语言 > 可以在OC代码中混入C语言代码,甚至是C++代码 > 可以使用OC开发Mac OS X平台和iOS平台的应用程序   二、OC语法预览 1. ...
     
    
    一、OC简介

    > C语言的基础上,增加了一层最小的面向对象语法

    > 完全兼容C语言

    > 可以在OC代码中混入C语言代码,甚至是C++代码

    可以使用OC开发Mac OS X平台和iOS平台的应用程序

     

    二、OC语法预览

    1. 关键字

    > 基本上所有关键字都是以@开头

    下面列举一些常见的关键字,看一眼就行了,不用去翻资料查找它们的含义

    @interface@implementation@end 

    @public@protected@private@selector

    @try@catch@throw@finally 

    @protocol@optional@required@class

    @property@synthesize@dynamic

    selfsuperid_cmd__block__strong__weak

     

    2.字符串以@开头

    比如@"Hello"OC中的字符串,而"Hello"则是C语言中的字符串

     

    3.其他语法

     

    三、OC程序开发过程

      与大部分语言一样,OC开发的过程分为三步:编写代码生成.m文件,编译生成.O文件, 连接生成可执行文件

     

    四、第一个OC程序

    1、OC程序的入口依然是main 函数,不过OC程序的原文件的扩展名为.m

    2、终端执行命令为:cc -c **.m(生成.o文件), cc **.o(生成可执行文件a.out)

    3、NSLog与printf函数的区别

    > NSLog接收OC字符串为参数,而printf接收C字符串为参数

    > NSLog输出后会自动换行,而printf不会,需要手动添加换行符

    > NSLog需要#import <Foundation/Foundation.h>

    > printf需要#include <stdio.h>

     

    4、#import的作用以及与#include的区别

    > #import#include一样,都拥有导入文件的能力

    > #import还可以对导入的文件进行检测,看当前工程是否已经导入,如果导入则不在进行导入。而#include没有这功能

     

    5、Foundation框架

    > 作为开发OCiOSMac程序的基础框架,也是必备框架

    > 此框架包含了很多常用API

    > 此框架有很多的头文件,如使用该框架的多个头文件时,可以该框架的主头文件,他包含了整个框架的大部分没头文件

    #import <Foundation/Foundation.h>

    6、OC 程序的基本数据类型

    > OC程序的基本数据类型和C语言的基本数据类型都一样,但只有布尔类型(BOOL)除外

    > OC程序的BOOL类型的有效值为YESNO, 和C语言中的布尔值完全不一样,这个需要特别注意

    > OC格式化输出数据的方式如下:

    • %d, %i 整数

    • %u 无符整形

    • %f 浮点/双字

    • %x, %X 二进制整数

    • %o 八进制整数

    • %zu size_t

    • %p 指针

    • %e 浮点/双字 (科学计算)

    • %g 浮点/双字

    • %s C 字符串

    • %.*s Pascal字符串

    • %c 字符

    • %C unichar

    • %lld 64位长整数(long long

    • %llu 无符64位长整数

    • %Lf 64位双字

     

    ------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-------


     

    @try @carch @finally普抓异常
    因为try catch无法捕获UncaughtException,而oc中大部分crash如:内存溢出、野指针等都是无法捕获的,而能捕获的只是像数组越界之类(这真心需要catch么?),所以try catch对于oc来说,比较鸡肋。
    简单的来说,Apple虽然同时提供了错误处理(NSError)和异常处理(exception)两种机制,但是Apple更加提倡开发者使用NSError来处理程序运行中可恢复的错误。而异常被推荐用来处理不可恢复的错误。
     
    展开全文
  • OC学习总结

    2014-09-11 17:47:10
    Objective-C简称OC,是扩充自C语言的面向对象编程语言。 OC是C语言的超集,可使用C语言源代码,兼容C语言程序 。  借鉴:Smalltalk语言的消息语法机制  用途:苹果OS X和 iOS 操作系统及其应用的主要开发...
  • Objective-C学习日记——Day1 程序是怎么执行的? 在电脑中,主要有这三个组件: a. CPU:CPU是程序执行的地方。 b. 内存:内存是程序存放的地方。 c. 硬盘:硬盘也是程序存放的地方。 内存和硬盘区别在于...
  • oc学习心得

    2015-05-28 22:54:07
    最近浅浅的学习了一下IOS,颇有感慨。使用手机这么多年有没有想过自己写一个APP?而且还是iPhoneAPP,听起来好高大上啊,不过这并不是天方夜谭,前提是好好敲代码!从一个programmingzero变成一个Appstore hero.  ...
  • Oc 学习笔记

    千次阅读 2012-12-03 21:43:29
    1.Objective-C中,调用方法被称为发送消息 ,通知对象执行某种操作。语法如下:[shape draw] 一、类声明(接口): @interfaceTestCoop : NSObject {  int iMonth;  int iYear;  int iDay; } - (void)...
  • OC学习前期准备

    2015-09-06 23:46:37
    OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码。 可以使用OC开发mac osx平台和ios平台的应用程序。 拓展名:c语言-.c OC语言.-m ...
  • OC学习笔记之OC类使用篇

    千次阅读 2014-05-02 13:40:10
    ---------------------- IOS开发、Android培训、期待与您... 和C++一样OC类也有三种访问属性,@public,@private,@protected。但是OC还多出一个 @package。  @public 公有访问属性,字如其义,被声明为公有属性时
  • 近期OC学习

    千次阅读 2013-08-06 12:22:15
    10.将数组当做函数参数传入的时候自动转为指针 11.#include  void test()  {  printf("use test");  }  int main()  { //(*p)是固定写法,代表指针变量p将来肯定是指向函数,左边的void指针...
  • OC学习 第六节

    2015-12-18 10:18:25
    OC执行方法的过程:运行程序执行到这个方法调用的时候,首先去指针指向的对象所属的类找有没有实现方法,如果有就调用,如果没有就去父类中去找,以此类推,直到最后,如果还没有找到则崩溃 Demo 多态 不同的...
  • 1、OC程序的编译、连接、执行 a、在.m文件中写上符合OC语法规范的源代码 b、使用编译器将源代码编译为目标文件:预处理--->检查语法--->编译 c、链接:cc xx.o,如果程序中使用到了框架中的函数或者类,...
  • OC基础学习1

    2019-11-15 09:47:39
    Objective-C相对于C a. 简称obj-c 或 oc ...OC程序的源文件的后缀名是.m,m代表message 代表oc中最重要的一个机制 消息机制 C程序的源文件后缀名是.c main函数仍然是OC程序的入口和出口 int类型的返回...
  • OC单例模式学习
  • OC学习那些事:Block

    千次阅读 2013-08-30 09:49:08
    Block封装了一段代码,可以在任何时候执行。  Block可以作为函数的参数,或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针类似,但是有区别:block是inline(内联函数)的,并且默认情况...
  • OC数组学习

    2014-12-13 21:32:04
    OC加强 */ /** OC数组 1、C语言中只能定义时类型元素 2、OC中可以放各种类型对象 */ NSArray *array0 = [NSArray array]; NSArray *array1 = [NSArray arrayWithObject:@"12"]; NSArray
  • OC学习笔记一---第一个OC程序

    千次阅读 2015-01-26 18:28:13
    OC是Objective-C的简称,从名字来看,就可以知道OC这个语言是在C语言的基础上建立起来了,所以OC完全兼容C语言的语法,并且也可以在OC中插入C语言的代码,OC与C语言的不同是OC在C语言的基础上增加了一层最小的面向...
  • oc语言学习

    2015-03-25 16:56:16
    oc是一门动态语言,通过消息机制来传递参数
  • =================== day8 Foundation杂类 =================== # 回顾 C模拟内存的引用计数 ...—————————————————————...# 基本数据类型怎么存放到OC数组中? NSNumber initWithLong:… init
  • OC学习笔记之description

    2015-08-10 11:22:17
    description介绍description方法是NSObject自带的方法,返回值类型是NSString类型。...在使用%@打印对象的时候,我们知道,如果对象是NSString类型的,那么打印内容就是对象字符串,但是其他的非NSSt
  • OC 学习第一天

    2013-08-02 22:09:08
    今天开始了OC学习,学习一个语言,特别是编程语言,我觉得首先不是记什么语法,函数,而是,去适应这个语言的编程风格,去了解怎么样的书写一个合格的 具有专业水平的代码,这对以后的学习和工作都是一个非常必要的好习惯...
  • OC学习笔记共享

    2015-10-14 11:22:07
    7 为了防止在显示vc的view时,造成的界面错乱(如果把下面的代码放置在动画中,则vc的view的创建和显示整个过程都要执行动画),就将下面的代码放置在动画执行之后。 ==================  ...
  • OC学习笔记之OC类的设计练习实战

    千次阅读 多人点赞 2014-05-04 19:38:31
    ---------------------- ... 为了练习OC类的设计与使用,小桥除了做老师的题目外也随便写了个题目来写在这篇笔记中:  /*-------------------------------------  * 小桥想的一个类设计小题目
  • OC学习笔记之多态

    2015-07-22 16:44:42
     程序直到运行的时候,才知道执行时才确定对象所有的类型。  动态类型的绑定使程序直到执行时才确定要对对象调用的实际的方法  OC不同于传统的程序设计语言, 他可以运行时加入新的数据类型和新的程序模块:...
  • oc是扩充c的面向对象语言。所以需要提前准备好一些c语言基础才能合理...直接在命令行中执行 gcc -v 结果如下   windows请安装MinGw,不过你要开发oc不可能用的是windows吧?;-)   2.基础数据类型与Java...
  • ------Java培训、Android培训、iOS培训、.Net培训、期待与...@property和@synthesize是OC的编译器特性,这两个关键字可以帮助我们自动生成属性的get方法和set方法。   #import @interface Car : NSObject { //int
  • OC学习总结(二)

    2015-02-15 14:33:32
    oc学习总结二7、内存管理以下两种情况发生时,所有者对象将会获得该对象的所有权 创建或者复制对象:alloc, allocWithZone:, copy,copyWithZone:, mutableCopy, mutableCopyWithZone: 保留对象:retain 在不需要...
  • Boss遵守协议,并实现协议的方法(执行协议),这样Boss才有资作为worker.myBoss 条款由谁制定? 主动方制定。谁是方动方?worker.myBoss,这个指针指向能实现协议的对象,我这个指针不是随便乱指的,要想让我...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,171
精华内容 5,268
关键字:

oc学习时候执行