[obj-c]基础的东西

记录学习obj-c的一些基础的东西

====================================

import ”xx"与import <> 区别

<>表示程序将会首先且只会去你的系统类库目录查找你所想引入的类或者包; 
""表示程序会首先从你的当前目录查找你所想引入的类或者包,如果没有找到,将去系统类库目录找.

 

 

obj-c方法前的符号含义。

 

减号 –

实例方法

     代表此方法是实例方法,必须先生成类实例,通过实例才能调用该方法。

 

加号 + 

类方法

    代表此方法是类的静态方法,可以直接调用,而不用生成类实例。

====================================

KVC 

 

概述 KVC是KeyValue Coding的简称,它是一种可以直接通过字符串的名字(key)来访问类属性的机制。而不是通过调用Setter、Getter方法访问。 

-valueForKey:

-setValue: forKey:

 

path

-valueForKeyPath:

-setValue: forKeyPath:

{把xx设置到马力: 车下的引擎属性,引擎属性下的马力

 [car setValue:@"xxxxx" forKeyPath:@"engine.power"]

}

 

整体操作(数组类)

KVC有一个很棒的一点是,如果NSArray 请求一个键值,它实际上会查询数组中的每一对象来查找这个键值。

ex:

tires<-数组

 

NSArray *pressures = [car valueForKeyPath: @"tires.xxxx"]

 

此时会把所有tires数组内的对象的xxxx属性都查询出来以NSArray的形式。

 

 

流畅的计算(通过使用path与@来实现快速计算)

在valueForPath下使用path与@来实现快速计算 cars是个数组

ex:计算一共用多少车

count = [xx valueForPath:@"cars.@count"]

@sum 

@min

@max

@avg

 

等目前我还不知道其他=-=

ex2:车队中形式公里最长的公里数 cars是个NSArray max会存放车队 cars中行驶公里最长的公里数

max= [xx valurForPath:@"cars.@max.gongli"]

!注意:编译器无法判断他是不是错误键路径。\

 

@distinctUnionOfObjects 在左边的属性数组对应右边属性中去重取出,以NSArray形式

[xx valueForKeyPath:@"cars.@distinctUnionOfObjects.make"]

去重取出make

distinct表示去重 union表示集合

 

处理setValue:forKey:  value为nil的问题

重写-(void) setNillValueForKey: (NSString *)key 

{

if(key isEqualToString: @"xxxx"){

XXXX=一个值为nil时此属性应该的值

}else{

[super setNilValueForKey:key];

}

}

 

处理未定义的键

添加一个NSMutableDictionary字典来保存未定义的键

重写

-(void) setValue:(id) value forUndefinedKey:(NSString *)key{

if(stuff==nil){

stuff=[[NSMutableDictionary alloc] init]

}

[stuff setValue:value for:key]

}

重写

-(id) valueForUndefinedKey:(NSString *)key{

id value = [stuff valueForkey:key];

return(value)

}

 

 

<null>,(null),nil

<null>

表示[NSNull null]

(null)

是一个真实的nil

nil

obj-c中的空值

NSDictionary  setValue:forkey:如果设置nil的话 会把对应的键从字典中删除。

 

NSPredicate

类似过滤器

[NSPredicate predicateWithFormat: @"name=='herbie'"]

返回一个 NSPredicate  类型对象 此对象表明 过滤:只保留name属性等于herbie。

name属性那个位置可以放置keyPath 如对car使用过滤器时 engine.horsepower>xxx

 

predicateWithFormat后跟一个@"keypath 运算符 value"

且@" (第一个过滤条件) AND (第二个过滤条件)"

AND 还可以为 OR, NOT, &&, ||, !,可以不分大小 不过还是大写好点

不等号不仅适用于数值 也适用于字符。比如<N 则过滤剩下A~M的。

 

数组运算符

引擎马力在50到200之间的。

BETWEEN 

@“engine.horsepower BETWEEN {50,200}”

IN

@“name IN{'abc','poolo'}”

 

字符串运算符

BEGINSWITH 以什么为开头

ENDSWITCH 以什么为结尾

CONTAINS 是否包含

 

LIKE运算符

name LIKE ‘*er*’  //包含er的 *表示前后任意

name LIKE '???er*'//er前面只能有3位后面任意

LIKE[cd] 用于忽略大小写

MATCHES 万恶的正则表达式

 

====================

一个_

_XX 表示是全局变量

两个_

__XX 表示是局域变量

 

====================

 

当属性为对象指针时 必须要使用(weak/strong) 修饰

strong 表示 长期持有  

keep tihs in the head until i don't point to it anymore

 

weak  表示 如果没有使用 则释放 

keep this as long as someone else points to it strongly

====================

self super in .h .m

.h

self     means my plementation

super  means my superclass's implements

.m

self     means tihs class's class methods

super  this class 's superclass's class methods

故 self与super只能调用class method [方法前面带+号的]

====================

参数不确定的时候用,号

如stringWithFormat @"%@",x

====================

id

oc 中 id可以接受任何对象,并且 id可以执行import到此类的方法。

id c=[[NSString alloc] init]

//此时c可以执行NSString的方法。

 

isKingOfClass: 是否是这种类别的[包含继承自这个类] 既所有类都是isKindOfClass:NSobject  的class 

isMemberOfClass: 是否是这种类的[只考虑自己 不考虑继承]既父类是不是不考虑

[obj isKindOfClass:[NSString class]]

respondsToSelector: 回复这个对象是否有这种方法。(方法选择器见下一模块)

[obj respondsToSelectore:@selector(shoot)]

 

====================

SEL

方法选择器[stanford课程第第三课]

SEL XXX=@selector(shoot)

 

[obj performSelector:obj的xx方法] //obj执行xx方法

//button 是UIButton对象

[button addTarget:self action:@selector(xx方法)]//绑定这个Button的执行目标为self,并将这个button按钮action绑定到xx方法。

如何定位Obj-C野指针随机Crash(二):让非必现Crash变成必现 继上一篇如何定位Obj-C野指针随机Crash介绍了思路后,这次我们继续看,如何让非必现Crash变为必现。 陈其锋,腾讯SNG即通产品部音视频技术中心软件工程师,主要负责iOS平台音视频功能开发,热衷于移动开发,以及各类APP体验 注:本文主要介绍一种延迟内在释放的技术,继续上一篇提到的如何提高野指针Crash的概率(可以文章底部点击“阅读原文 阅读详情

相关推荐

c/C++中后缀obj/o lib/a dll/so bin文件意义

在我们日常编译过程中,常遇到各种后缀的文件,诸如题目中的,加上编译 链接,预处理等等乱七八糟很混乱,今天有幸总结了下。记下来防止以后忘了。 首先讲一下程序编译连接的过程 首先,由编辑器产生源文件。诸如.c .cpp的是源文件,纯文本格式。还有.h文件,是头文件,为用得比较多的函数什么的,类,放在一起,方便一个include就可以解决。此外头文件一般用一个同名的cpp放比较好,这样主要好辨识么。

Hello world! 2376

Obj-C 基础概述

You Need Me 2614

如何定位Obj-C野指针随机Crash(一):先提高野指针Crash率

陈其锋,腾讯SNG即通产品部音视频技术中心软件工程师,主要负责iOS平台音视频功能开发,热衷于移动开发,以及各类APP体验。 是的,你没有看错,现在要说的就是提高Crash率! 欲让其灭亡先让其疯狂,我们当然不是人为制造Crash,准确地说,是使隐藏的随机性Crash暴露出来,提高测试时的Crash率,从而降低版本发布后的Crash率。 写C、C++代码的同学应该都清楚,Crash最

腾讯Bugly的专栏 1万+

IOS第四天——Obj-C的数据类型和表达式

那么其实很多朋友可能会纳闷儿,你不是要学IOS开发么?那么直接去学就好了,抄呗,拖拖控件,写几行代码就好了啊,好吧,其实这个也算是个捷径,但很多时候要想做好,还是说,基础要打牢,所以,废话不多讲,开始今天的学习。 今天我们主要来看下Obj-C的数据类型和表达式 一、  数据类型 Obj-C是C语言的超集,之前我们都知道了,所以Obj-C中的数据类型分为两种:一种是基于C语言的基本数据类型

jeepxiaozi的专栏 7605

手把手教你逆向京东搜索接口:H5ST 556位参数生成与V8补环境技巧

本文深入解析了京东搜索接口中关键的H5ST 556位参数生成机制,并提供了详细的逆向实战指南。针对其复杂的反爬虫环境检测,文章重点介绍了通过链式补环境技巧,在Node.js中完整模拟浏览器环境(包括原型链检测和指纹验证)的方法,帮助开发者成功绕过防护并生成有效参数。

weixin_29315091的博客 480

【一起学UniGUI】--UniGUI的部署选项(5)

uniGUI支持Windows平台下所有主要部署选项。 1.Standalone Server (独立服务器) 最简单的部署方法是独立服务器。在这种模式下,应用程序服务器像桌面应用程序一样直接运行。它也是用于调试应用程序的模式。运行应用程序可执行文件后(它是一个EXE文件),它将最小化到托盘图标,并运行到用户手动终止为止。见下图: 一个独立的应用程序可以...

5776

OC语法讲座

OC语法讲座 总贴为:http://www.cocoachina.com/bbs/read.php?tid=79118.html 第一节总括     这一节是对Objective-C(以后简称ObjC)的简要介绍,目的是使读者对ObjC有一个概括的认识。 1.面象的读者         在阅读本文之前,应具备使用与C类似的编程语言(如C,C++,JAVA)的一些经验,

moliyll的专栏 1033

上海市大数据中心笔试模拟试卷

为帮助考生熟悉上海市大数据中心笔试的题型、考点及答题逻辑,以下整理了一份的模拟试卷,涵盖大数据专业知识、行政职业能力测试(行测)、公共基础知识(含上海本地政策)三大核心模块,并附详细答案解析。

一叶之秋的博客 1815

OC简介及基本语法(一)

1.什么是OC? Objective-C简称Obj-C或者OC,Objective的意思就是面向对象的。OC其实就是在C语言的基础之上,封装了一层面向对象的语法,他并不是一门全新的编程语言。OC是Mac OS X系统和iOS系统的主要开发编程语言。C程序的源文件的后缀名为.c,OC程序的源文件是后缀名为.m,m就是message的意思。因为OC是完全兼容C语言的,所以在.m文件之中是可以写任意的C代码。并且OC中main函数仍然是OC程序的入口,作用和C语言中的是一样的。 (1).#import指令

程序猿老樊的博客 8350

ARFoundation系列讲解 - 24 锚点

一、添加平面检测和平面可视化 请参考 ARFounnation快速入门-08平面检测 案例 二、添加射线检测 1.在AR Session Origin 组件上添加ARRaycastManager 脚本

a451319296的博客 4876

Dify智能体开发:Dify文件上传

相较于聊天文本,文档文件能够承载大量的信息,例如学术报告、法律合同。受限于 LLM 自身仅能够支持文件或图片,难以获取文件内更加丰富的上下文信息,应用的使用者不得不手动复制粘贴大量信息与 LLM 对话,增加了许多不必要的使用成本。

王国平的博客 2590

python PYQT框体中显示obj模型文件

from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtOpenGL import QGLWidget import sys from vtk import * from vtk.qt.QVTKRenderWindowInteractor im...

valoz的博客 5650

NR TA

这篇是NR TA的笔记,之前有对R17 NTN TA进行了简单总结,但是也仅仅局限在NTN部分,其他TA基本过程没有涉及,这篇是针对R16版本协议对NR TA相关内容做的总结。和PUSCH power control过程类似,NR TA也可以分为开环 和闭环调整,相关内容分散在38.300,38.211,38.213,38.321,38.133和38.331。后面就按照38.300 TA相关概念,38.211中有关TA定义,38.213 TA 相关内容,38.321 TA控制过程,38.133 Timi

ModemProtocol的博客 768

零基础实战:用 Docker 和 vLLM 本地部署 BGE-M3 文本嵌入模型

BGE-M3是北京智源推出的多功能文本嵌入模型,支持跨语言语义匹配。利用Docker容器化和vLLM框架可高效部署该模型,实现本地运行的优势包括隐私保护、定制化和成本控制。通过配置Docker环境,使用vLLM官方镜像加载模型,并进行文本嵌入测试验证效果。该方案适合开发者快速验证模型能力,或集成到本地NLP流程中。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 4953

BUG调试案例六:RK3568+国产YT8531网络PING调试案例

这次调试过程让我对后续类似问题的应对更加有信心。如果芯片在其他项目中已被验证可用,那么在我们的设计中原则上也应该能够正常工作。如果出现异常,就必须坚持追根溯源,找出具体原因和根本问题。每一次问题的解决,都是一次深入理解系统和提升能力的机会 —— 在不断探索和学习中,也在持续成长。

案例文章,高速信号 2326

C语言—常见基础概念(一个初学者必须要了解的东西)

C语言把.c为后缀的文件称为源文件,把.h为后缀的文件称为头文件(header)。上述简单代码中出现了printf函数,实现了在屏幕上的信息的打印,那么就来简单介绍一下。printf 是库函数 ------C语言的标准库中提供的现成函数,它的功能是在标准输出设备(一般指屏幕)上进行信息的打印。上面的代码是使用printf函数打印字符串(就是一串英文字母)。我们在使用库函数的时候,是需要把标准库给写出来,否则你怎么引用库函数呢?那么,在这里,我们的标准库也就是头文件。

l1894的博客 2435

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Obj-C和C++等等编程语言如何选择

它可以用于Linux底层开发,开发Windows操作系统,开发Windows应用程序(包括游戏开发),人工智能开发,开发传统嵌入式……学了Java,也能开发许多东西,比如大数据框架:Flink,就是用Java编写的。其它的自己选择,Java好就业,C++更适合底层的东西和Windows窗体应用开发。可是对于其它的,比如Windows应用程序,用Obj-C就无法开发了。Obj-C,全称Objective-C,就是面向对象的C语言,它和C++一样,都是在C的基础上增加了面向对象。的人在使用Java语言!

Leo201111的博客 945

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C/C++::浅谈.obj .exe .dll .lib关系&& .o .a .so关系

浅谈.lib .dll .obj 关系&amp;&amp; .a .so .o关系  一、.obj .exe .dll .lib (1).obj 目标文件,相当于源代码对应的二进制文件。 obj文件就是用.c .cpp .h文件经过编译器编译之后生成的目标文件。 (2).exe 将程序运行所需要的全部.obj文件连接起来,即形成.exe文件。 也就是windows下的可执行文件。 o...

dieju8330的博客 2758

记一次C++编程引用obj文件作为静态库文件

简介 常用静态库文件的名字一般是 ***.lib ,例如 nisyscfg.lib 就是一个静态库文件,但是一个例程居然是引用 **.obj 文件作为静态库,有点非常规啊。 这是一个NI488.2 的例程,其中一个例程的说明文档如下: Microsoft Visual C++ (64-bit) With Microsoft Visual C++ (Version 8.0 or higher), ...

weixin_34281477的博客 815

obj、dll、exe、lib文件的区别

1. OBJ是中间代码文件、LIB是静态库文件、DLL是动态库文件、EXE是可执行文件。 2. 对于静态库文件,链接的时候把其中需要的东西抽取出来嵌入到EXE中,EXE较大。 3. 对于动态库文件,EXE执行的时候依赖于DLL提供的功能,没有DLL则EXE无法执行,EXE较小。 4. 一个C或CPP文件被编译后既是一个OBJ,当所有必须要的C或CPP都被编译成OBJ后再统一链接成EXE。

qq_28975813的博客 1629

C和obj-c 如何混用

 1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj-c的代码,因为cpp只是cpp 2)在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题 3)在cpp中混用obj-c其实就是使用obj-c编写的模块是我们

兰卡萧兮~ 970

object c 基础的东西了

减号表示一个函数、或者方法、或者消息的开始 括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。 同一个数组可以保存不同的对象 C用NULL,OC用nil Objective-C 有种叫做 id 的型别,它的运作有时候像是 void*,不过它却严格规定只能用在对象。 基本类别库 import NSObject.h;BOOL型为YES or NO ...

a564941464的专栏 138

c和obj-c如何混用?

1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码,处理mm文件可以识别obj-ccc++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj-c的代码,因为cpp只是cpp 2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题 3)在cpp中混用obj- c其实就是使用obj-c编写的模块是我们想要的。

志存高远 1435

c和obj-c如何混用

1)obj-c的编译器处理后缀为m的文件时,可以识别obj-c和c的代码, 处理mm文件可以识别obj-c,c,c++代码,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj- c的代码,因为cpp只是cpp 2) 在mm文件中混用cpp直接使用即可,所以obj-c混cpp不是问题 3)在cpp中混用obj- c其实就是使用obj-c编写的模

kkk0526的专栏 1864
上一篇: [android]ViewPage上无法通过onKeyDown()获得按钮事件
下一篇: [Mac os]Mac OS X操作系统常见快捷键集锦
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值