zoukankan      html  css  js  c++  java
  • 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;//枚举的定义
  • 相关阅读:
    Elasticsearch-PHP 索引操作2
    Elasticsearch-PHP 索引操作
    Linux系统编程1_C标准函数库和系统调用
    Git命令_git commit
    Git命令_git log
    Linux27_配置samba
    计算机网络12_整理
    理解操作系统8——字符设备与块设备
    网站开发基础知识3_会话和cookie
    网站开发基础知识2_前后端分离
  • 原文地址:https://www.cnblogs.com/nauy/p/3806418.html
Copyright © 2011-2022 走看看