下文为阅读笔记。
一:Object-c的类基本定义
1. 类定义在@interface和@end之间。
2.MyClass:NSObject的方式定义子类和父类。
3.{}中定义类的对象成员
4.-/+定义的是方法,-定义的是对象的方法,+定义的是类的方法。对象是类的一个实例。对于对象的方法,也即是,当使用该方法之前必须先生成该类的一个特定对象。
二:强类型和弱类型的引用
Object-C的对象可以使用强类型引用和弱类型引用
MyClass *myObject1; // Strong typing
id myObject2; // Weak typing
MyClass * myObject1是一种强类型的定义方法,该定义方法与C++类似。
id myObject2是一种弱类型的定义方法,弱类型的对象主要用于集合类,集合类的对象通常在运行时才知道集合中内部的对象类型定义。弱类型的引用的使用与Object-C的动态类型绑定(Dynamic Typing)息息相关,在Object-C中,每一个对象包含一个成员变量isa,保存着对象属于哪一个类的类型信息。于是,开发人员能够在运行时刻知道对象的定义,例如,其父类是什么,实现了什么函数等。
三:函数定义和调用
Object-C的函数定义和调用都比较特别,为了让对象执行某个操作,需要向对象发送消息,因此,函数的调用被称作Object Messaging。其消息的定义是[Receiver Message],前者是接收消息的对象,后者是消息的本身。此处先看看函数的定义:
函数的定义由函数的类型标记(Method type identifier)、返回值(return type)、一个或者多个的函数签名关键字(Method signature)、参数的类型和命名信息组成。
函数的真实命名由各个级联的函数签名关键字组成。例如上述函数定义中函数真实的命名是(insertObject:atIndex:)分号隔开参数的声明。局部的函数签名关键字看起来更像是函数参数的内部命名,真正的参数命名反而在Object Messaging中不出现。例如,上述的函数调用可以写成
[myArray insertObject:anObject atIndex:0];
再来看一个例子,前一行是函数的定义,后面一行是函数的调用,可以看到后面的调用Ojbect Messaging中,写的是函数方法签名的关键字
(Method signature keywords)而不是参数命名(parameter names)。由于没有特别的函数名一项,注意其第一个函数方法签名关键字的
命名看起来就像函数名(changeColorTo)+第一个参数(Red)
- (int)changeColorToRed:(float)red green:(float)green blue:(float)blue;
[myColor changeColorToRed:5.0 green:2.0 blue:6.0];
上述例子中,实例方法的真是命名是: -changeColorToRed:green:blue: ,冒号隔开的各个参数顺序不能更改。
问题说明我们经常要往现有的项目中添加扩展包,有时候因为文档的错误引导,如下图来自 这个文档 的:composer update 这个命令在我们现在的逻辑中,可能会对项目造成巨大伤害。因为 composer update 的逻辑是按照 composer.json 指定的扩展包版本规则,把所有扩展包更新到最新版本,注意,是 所有扩展包,举个例子,你在项目一开始的时候使用了 monolog,当时的配置信息
数据背景,一个文件大小>=10G,每一行都是一个json对象数据 如下:{"id":"C0D962","time":"2015-09-01 23:59:54","lon":"113.534","lat":"22.214",……}高效读取的方法:方法一: readLine()占用总时间的80%,使用BufferedReader,每次读入5M数据.减少IO.如:
典型的prim算法这类题目可以稍作变形,比如POJ2421#include #include #define MAXN 102typedef long elem_t;using namespace std;elem_t prim(int n,elem_t mat[MAXN][MAXN]){ elem_t closeEdge[MAXN],sum=0,min;
Nordic的SDK做的很好,但是他们一副生怕有什么地方做的不到位一样, 很多简单的功能代码却写的很复杂,如果是java还好,但是C语言实现起来,很多地方的代码读起来特别费劲。我在添加自己的服务的时候,没有仿照他们的示例格式去定义,而是重新处理了一下,由于复用了大量的代码,比示例程序更容易理解和阅读。 核心代码使用两个宏来定义,一个是向Service添加attri...
Nginx mail相关模块结构体ngx_mail_module_t 这是mail模块的抽象接口,即ngx_module_t中的ctx成员所指向的mail模块特有接口。每一个mail模块都会实现自己的ngx_mail_module_t结构体。 typedef struct { // POP3 STMP IMAP邮件模块提取出的通用接口 ngx_mail_protocol
问题 使用spring的配置事物注解@Transactional,在测试的时候发现不起作用。环境 配置文件[html] view plain copy bean id="studentMGDataSource" class="org.apache.commons.db
编译PHP时需要加入 --enable-maintainer-zts 选项才能安装pthreads# pecl install pthread 配置文件 cat > /srv/php-5.5.7/etc/conf.d/pthreads.ini <<EOFextension=pthreads.soEOF $ php ...
目录环境设置(root权限)1.关闭防火墙和SELinux2.设置主机名3.配置hosts4.配置sshd秘钥设置1.创建免密码登录账户2.生成秘钥3.将公钥导入到认证文件4.设置文件访问权限5.将认证文件复制到其他主机假设有 A、 B 两台 Linux 服务器,我们希望能够从其中一台服务器通过 SSH 免密码登录到另一台服务器。两台服务器的信息如...
第1节 JAVA中的包装类相信各位小伙伴们对基本数据类型都非常熟悉,例如 int、float、double、boolean、char 等。基本数据类型是不具备对象的特性的,比如基本类型不能调用方法、功能简单。。。,为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型。 基本类型和包装类之间的
1 介绍创建并初始化spring容器中,refresh()方法中解析xml配置文件,注册容器后处理器,bean后处理器,初始化MessageSource,ApplicationEventMulticaster广播器,注册完ApplicationListener监听器后,关键一步就是创建和初始化其他非lazy-init的singleton beans。这样在容器初始化好的时候,这些singleton
涉及平台:平台管理(包含自营店面)、商家端(PC端、手机端)、买家平台(PC端、H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务)核心架构:Spring Cloud、Spring Boot、Mybatis、Redis、SFTP前端框架:VUE、Uniapp、Bootstrap/H5/CSS3、IOS、Android、小程序需要框架源码的朋友可以看我个人简介联系我。推荐分布式架构源码...
错误删减了一部分,出现这个问题一直以为时头文件错误,试了没用。2>SetData.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CNetCmd::~CNetCmd(void)" ([email protected]@[email protected]),该符号在函数 [email protected]@[email protected]@@Z$0 中被引用...