Object-C 杂乱笔记

开发环境

自己写Demo的话,在[MAC OS X]-->[Application]-->[Command Line Tool](命令行模板 ) 设置文件名称的时候 Type选择Foundation系统库即可

NSLog 输出格式

    •    %@     对象
    •    %d, %i 整数
    •    %u     无符整形
    •    %f     浮点/双字
    •    %x, %X 二进制整数
    •    %o     八进制整数
    •    %zu    size_t
    •    %p     指针
    •    %e     浮点/双字 (科学计算)
    •    %g     浮点/双字 
    •    %s     C 字符串
    •    %.*s   Pascal字符串
    •    %c     字符                          竟然只能输出一个,若是多个的时候,选择最后一个char做为输出
    •    %C     unichar
    •    %lld   64位长整数(long long)
    •    %llu   无符64位长整数
    •    %Lf    64位双字 

Note: 多个变量输出的时候竟然需要写多个%i,%d之类的(个人现在认知)

     

int r = 5;
int p = 3;
NSLog(@"the number is %i %i",p,r);

键值编码

定义: 一个用于间接访问对象属性机制        (跟java中的反射貌似很像)

                1 这个机制不需要调用存取方法和变量实例就可以访问对象属性

                2  默认的实现方法由NSObject(祖先),NSKeyValueCoding(一个非正式协议的类目录)中被声明

                3  支持带有对象值的属性,纯数值类型,结构,非对象参数和返回类型会被识别并自动封装/解封

使用:-valueForKey:  和 -setValue: forKey: 这两个方法(两个方法都看不明白的,看看方法的定义)

                1 以字符串的形式向对象发送消息

       2 不存在setter,getter方法时,将在内部查找名为_key(一种属性命名的方式,高级注释有木有,一眼看穿有木有)或key的实例变量,可获取到不存在getter方法的对象值,无需通过对象指针直接访问(我感觉很NB)

                3 -setValue: forKey:设置对象的值或者valueForKey来获取对象的值,若对象的实例变量为基本类型(char,int,float,Bool.....)时,我们需要对数据进行封装(比如IsNumber)

这里是一个访问私有变量代码

//这里Book类仅仅是定义一个私有的属性
//-----------------------------------------------
#import "Book.h"

@implementation Book:NSObject{
 @private
    NSString *_name;

}
@end

//这是main.m程序
//这里故意把forkey中的参数写为name,也能实现,可以看到一种访问机制
//---------------------------------------------------

#import <Foundation/Foundation.h>
#import "Book.h"

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        Book *book = [[Book alloc]init];
        [book setValue:@"nbbbbb" forKey:@"name"];
        NSString *name = [book valueForKey:@"name"];
        NSLog(@"%@",name);
        
    }
    return 0;
}

Enum

枚举值为整形(int)  

不参加内存的占用和释放(这句话的含义自己理解)

枚举定义变量即可直接使用,不用初始化

typedef enum
{
  enumone = 0.
  enumtwo = 1//int类型
   
}enumnamedefine;//枚举的定义
原文地址:https://www.cnblogs.com/nauy/p/3806418.html