Objective-C入门

 厂长最近又有新计划,准备做iOS上的开发,要操作工们(其实就是我自己)学习Objective-C,准备为厂子下一步的发展做出巨大贡献。拿人钱财,替人消灾,又得花时间折腾一门语言。话说自从来到现车间,用过C、C++、C#、Python,还写过几句PHP、ASP,刚开始Linux和AIX平台,后来接手Windows平台,可谓万能的螺丝钉,哪里需要就往哪里插。可悲的是无一样称得上精通。

闲话少说,开始正题。本篇博客意在给有一些经验的C\C++新手做个Objective-C语法的简介,内容只是Objective独特的地方,至于继承、重写等基本概念和C++是类似的,想要深入学习,还是得巨资买苹果产品亲身实践,本人也是仅仅看了几页书,纸上谈兵而已。

Objective-C属于C的超集,所以基本的控制结构啊啥的都和C差不多,主要是涉及到面向对象的一些概念,Objective-C有自己独立的一套东西。

文件类型 

Objective-C的文件类型的设计和C++差不多,也分为头文件和源文件,头文件(以.h结尾)中包含类的定义,而源文件(以.m结尾)中则包含类中函数的实现。同时项目中还可以包含C\C++\Perl等代码文件。

类的定义

// .h文件
#import <Foundation/Foundation.h>@interface People: NSObject
{int sex;
}-(int) sex;
-(void) setSex:(int) s;@end
// .m文件
@implementation People
-(int) sex
{return sex
}-(void) setSex:(int) s
{sex = s;
}
@end

上面对于成员变量sex的操作可以使用accessor methods实现,其本质上就是让编译器来帮你实现这些函数,减少工作量。

### Synthesized Accessor Methods ###

// .h文件
#import <Foundation/Foundation.h>@interface People: NSObject@property int sex;@end// .m文件
@implementation People
@synthesize sex;
@end

### 类的继承 ###

@class ParentClass //前置声明
@interface ChildClass: ParentClass
@end

### Category的使用 ###

// category.h
#import "People.h"
@interface People (LiveOps)
-(void) love: (People *) p;
-(void) think;
-(void) die;
@end// category.m
@implementaion People (LiveOps)
-(void) love: (People *) p
{
}-(void) think
{
}-(void) die
{
}
@end

### Protocol的使用 ###

// .h文件
@protocol Living
-(void) think;
-(void) love;
@optional
-(void) getMarried;
@end

category和protocol是有差别的。使用category的目的是在不修改原有类的前提下,为该类添加新功能,而且category中的函数不必全部实现,而protocol是提前约定好接口,虽然protocol中函数也可以可选实现,但是需要使用optional声明。

除此之外,C中的enum、struct、typedef、define等在Objective-C中都是可用的

今天就扯这些,收工休息

转载于:https://www.cnblogs.com/jimmychange/p/3498875.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux c之用fwrite和fread实现文件的复制

1、题目 用fwrite和fread函数实现文件的复制 2、函数解释 #include<stdio.h> size_t fread(void *ptr, size_t size, size_t nmemb, FILE *FP); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *FP); 2个函数返回:读或写的对象数 fread函数用于执行直…

想象中的论文答辩和真实的论文答辩,哈哈哈哈哈哈……

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;冷兔&#xff08;lengtoo&#xff09;整理自网络&#xff0c;图源见水印毕业季即将来临&#xff0c;放眼朋友圈&#xff0c;大家都在为毕业论文答辩忙碌。论文答辩可以说是校园生活的最后一站&#xff0c;是毕业论文…

python总线 rabbitmq_python - 操作RabbitMQ

介绍RabbitMQ是一个在AMQP基础上完整的&#xff0c;可复用的企业消息系统。他遵循Mozilla Public License开源协议。MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信&#xff0c;而无需专用…

JavaScript闭包学习笔记

闭包&#xff08;closure&#xff09;是JavaScript语言的一个难点&#xff0c;也是它的特色&#xff0c;很多高级应用都要依靠闭包实现。 下面就是我的学习笔记&#xff0c;对于JavaScript初学者应该是很有用的。 一、变量的作用域 要理解闭包&#xff0c;首先必须理解JavaScri…

ABP vNext微服务架构详细教程——架构介绍

总体架构所有应用服务、API网关、身份认证服务均部署在Kubernetes容器中&#xff0c;由Kubernetes提供应用配置、服务治理、服务监控等功能。客户端所有访问均通过Kubernetes的Nginx-Ingress接入服务集群&#xff0c;并由API网关负责路由匹配和身份认证后转发至相应的应用服务处…

wireshark远程抓包

2019独角兽企业重金招聘Python工程师标准>>> 配置ssh证书 在本地机器创建公钥ssh-keygen -t rsa -C your_emaildomain.com将公钥复制到ssh服务器 scp ~/.ssh/id_rsa.pub usernamehostname:~/ #将公钥文件复制至ssh服务器 ssh usernamehostname #使用用户名和密码方…

BO QUERY BUILDER - SI_INSTANCE相关属性

概念&#xff1a;一个instance分为runnable(schedule生成&#xff0c;用于在recurring时间点创建其他Instance), 非runnable&#xff08;runnable instance生成的结果&#xff09;。SI_INSTANCE SI_INSTANCE_OBJECT SI_RUNNABLE_OBJECT验证通过select * from ci_infoobjects …

linux c之出现warning: implicit declaration of function ‘exit’ [-Wimplicit-function-declaration]这个问题

1、问题&#xff1a; 2、解决办法&#xff1a; 先执行下面命令看exit在哪个头文件下面 man exit 效果如下图 加上头文件编译&#xff0c;问题就解决了 3、 总结 如果看到编译的时候提示wall,我们首先是找到报警搞的函数&#xff0c;再用man 命令来 man 函数&#xff0c;然后找…

中大博士偷偷做了这件事,今天终于曝光了...

全世界只有3.14 % 的人关注了爆炸吧知识今天不谈其它说说心里的话大家好&#xff0c;我是超模君。做数学科普这么久&#xff0c;一直都很感谢大家的支持。不知不觉&#xff0c;超模君原创的文章已经有1000多篇了。不敢说做了多大的工作&#xff0c;但假如各位能从中学到一点东西…

python mssql github_GitHub上最热门的开源项目都在这里了

最近整理了一些在GitHub上比较热门的开源项目关于GitHub&#xff0c;快速了解请戳这里其中涵盖了&#xff1a;学习教程&#xff0c;面试总结&#xff0c;实用工具&#xff0c;框架&#xff0c;机器学习等东西比较杂&#xff0c;要学的东西也比较多&#xff0c;先存着&#xff0…

.NET6之MiniAPI(十):基于策略的身份验证和授权

JWT不管是基于角色&#xff0c;还是自定义策略&#xff0c;实现的步骤都是大同小异的&#xff0c;基于自定义策略的步骤如下&#xff1a;1、appsettings.json中配置JWT参2、添加身份认证和授权服务和中间件&#xff0c;并设置为策略模式和策略名称3、定义生成Token的方法和验证…

K均值算法总结

这几天在一个项目上需要用到K均值聚类算法&#xff0c;以前都是直接利用百度老师copy一个Kmeans算法代码&#xff0c;这次想自己利用已知的算法思想编写一下&#xff0c;编写才知道&#xff0c;虽然熟悉了算法思想&#xff0c;真正实现时&#xff0c;还是遇到不少bug&#xff0…

linux c之创建进程fork和vfork函数之间的区别

1、函数简介 1)、得到当前的进程id pid_t getpid(); 2)、fork函数 要创建进程,必须调用fork函数, 系统调用fork用于派生一个进程,函数原型如下 #include<sys/types.h>#include<unistd.h>pid_t fork(void) 若成功,父进程中返回子进程id,子进程返回0;若…

前端几个笔试题及答案(bd)

1. 行内元素、块级元素和空元素&#xff08;void&#xff09;举例。 块级元素&#xff1a;<address>、<caption>、<dd>、<div>、<dl>、<dt>、<fieldset>、<form>、<h1>、<h2>、<h3>、<h4>、<h5&…

架构设计:远程调用服务架构设计及zookeeper技术详解(上篇)

一、序言 Hadoop是一个技术生态圈&#xff0c;zookeeper是hadoop生态圈里一个非常重要的技术&#xff0c;当我研究学习hadoop的相关技术时候&#xff0c;有两块知识曾经让我十分的困惑&#xff0c;一个是hbase&#xff0c;一个就是zookeeper&#xff0c;hbase的困惑源自于它在颠…

据说很多女生都想知道男生是如何上厕所的?

1 老婆守恒定律&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 捡破烂的狗子&#xff08;via.李市民&#xff0c;侵删&#xff09;▼3 见过最搞笑的买药经历&#xff08;素材来源豆瓣yuyii&#xff0c;侵删&#xff09;▼4 男朋友的室友可以多粘人&#xff1f;&a…

【云图】如何设置支付宝里的家乐福全国连锁店地图?

【云图】如何设置支付宝里的家乐福全国连锁店地图&#xff1f; 原文:【云图】如何设置支付宝里的家乐福全国连锁店地图&#xff1f; 摘要&#xff1a;本文详细讲解了&#xff0c;如何设置支付宝服务窗。商家如何将自己的全国连锁店放置到云图上&#xff0c;并且在支付宝服务窗中…

ABP vNext微服务架构详细教程——基础服务层

1服务创建在除身份管理相关服务以外的其他业务服务中&#xff0c;我们不需要包含用户角色权限管理功能模块&#xff0c;ABP vNext框架为我们提供了模块模式&#xff0c;其默认模板不包含身份管理相关模块&#xff0c;更适合用于搭建普通的业务微服务。以产品管理服务为例&#…

linux c之main(int argc, char *argv[], char *envp[])参数意义

1、问题 我们常见的int main(int argc, char *argv[], char *envp[]) 各个参数的意义 2、代码 #include<stdio.h> #include<unistd.h>int main(int argc, char *argv[], char *envp[]) {printf("argc ###\n%d\n",argc);puts("argc end ************…

salt-ssh的使用(不需要安装客户端)

什么情况下才使用salt-ssh&#xff0c;有一些比较老的红帽服务器&#xff0c;也有一些不方便安装salt-minion客户端。总会有一些服务器比较难安装上salt-minion的。好了&#xff0c;下面来说说简单配置默认使用roster配置文件vim /etc/salt/roster # Sample salt-ssh config fi…