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;
}

  

Object-C 杂乱笔记

时间: 2024-07-30 11:00:04

Object-C 杂乱笔记的相关文章

Java Object类学习笔记

看下Api文档的一些说明 public class Object Class Object is the root of the class hierarchy. Every class has Object as a superclass. All objects, including arrays, implement the methods of this class. Since: JDK1.0 从JDK1.0就已经存在的元老类,类结构的根,所有类的父类,所有类都实现了这个类的方法,包含

Object C学习笔记25-文件管理(一)

在此篇文章中简单记录一下文件管理,在Object C中NSFileManager用于管理文件已经路径.在Object C中的文件路径可以是相对路径也可以是绝对路径.斜线"/"开头,斜线实际上就是一个目录,称为 根目录.字符(-)用作用户主目录的缩写.点" . "表示当前目录,两点"  .. "表示父目录. 一. 创建NSFileManager 对象 NSFileManager非常简单,可以使用如下方式来创建NSFileManager对象. NSS

Object C学习笔记26-文件管理(二)

上一篇简单的介绍了如何获取文件属性,删除,拷贝文件等,本文继续记录Object C中文件IO操作. 一. 获取文件的执行主目录 在Object C中提供了一个方法 NSHomeDirectory() 用于获得执行执行的主目录,使用如下代码测试: NSString *homePath=NSHomeDirectory(); NSLog(@"执行文件的主目录:%@",homePath); 通过以上代码可以正确的输出应用程序的执行目录,上一张也提到了文件的目录问题,这个和Windows系统的有

包装类、Object类——Java笔记(八)

包装类: 基本数据类型的包装类 基本数据类型 包装类 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean 基本数据类型包装类除了Character类之外,其他7个都有两个构造方法 一个构造方法传参传的是基本数据类型本身 另一个构造方法传参传的是String类型的,而Character少的就是这一个,即public Character(String

Selective Search for Object Recognition 论文笔记【图片目标分割】

这篇笔记,仅仅是对选择性算法介绍一下原理性知识,不对公式进行推倒. 前言: 这篇论文介绍的是,如果快速的找到的可能是物体目标的区域,不像使用传统的滑动窗口来暴力进行区域识别.这里是使用算法从多个维度对找到图片中,可能的区域目标,减少目标碎片,提升物体检测效率. 下面是这篇文章的笔记: 介绍及引言: 图片是分层次的,比如下图中a: 沙拉和匙在沙拉碗里,而碗又在桌子上,另外桌子和木头有关或者说桌子和桌子上的所有东西有关.所以图片中的目标是有层次的. 图片分割应该按层次来,也不存在使用单个策略这样通用

js的杂乱笔记

(1)offsetwidth = width +padding +border;(不加margin)offsetHeight = Height +padding +border;(不加margin)(2)offsetLeft:有定位的父元素的距离,如果父元素没有定位,就往上找.offsetLeft和style.left区别 1.style.left带有px 2.offsetleft可读写.style.left不可写. 3.(3)offsetParent:检测带有定位(绝对和相对都可以)最近的父节

ELK-5.0.1_生产实践杂乱笔记

[[email protected] ~]# cat /etc/redhat-release  (经实践,elk5.0.1 需要内核3.点几以上版本支持) CentOS Linux release 7.2.1511 (Core) IP: 本地 192.168.1.73 [[email protected] ~]# cat /etc/hosts 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain

Object -C NSValue -- 笔记

// //  main.m //  NSValue // //  Created by facial on 26/8/15. //  Copyright (c) 2015 facial_huo. All rights reserved. // #import <Foundation/Foundation.h> struct sct { int a; int b; }test; int main(int argc, const char * argv[]) { @autoreleasepool

Object -C NSSet -- 笔记

// //  main.m //  NSSET // //  Created by facial on 25/8/15. //  Copyright (c) 2015 facial_huo. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@&quo