首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

objective-C 的OOP(上)--类定义、继承及方法调用

上一篇展示了如何用传统的“面向过程编程方法”,实现画“矩形”、“圆”、“椭圆”,这一篇看下如何改用OOP的方法来实现: 因为要用到“颜色”以及“矩形区域”二个枚举,先把他们抽出来单独放在CommDef.h...,注意:在obj-C中,定义一个类通常分成二部分,一部分是".h"的文件,用来申明类有哪些成员(也称为类的定义文件,类似于接口),另一部分是".m"的文件,用来提供具体实现 Shape类的申明部分如下:...@",bounds.x,bounds.y,bounds.width,bounds.height,[super getColorName:fillColor]); } @end 注:上面展示了在obj-C中如何调用父类的方法...rect2]; [shape[2] setFillColor:kBlueColor]; [shape[2] draw]; return 0; } 注:上面的代码中有一个id的变量,在obj-C中...同时我们也看到了,创建一个类的实例用“[类 new]”来完成。 最后附上文件结构图:

1.2K80
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    接口与API设计--19:清晰而协调的命名方式

    给方法命名注意事项 如果方法返回值是新创建的,那么方法名的首个词应是返回值的类型,除非前面还有修饰语 应该把表示参数类型的名词放在参数前面 如果方法要在当前对象上执行操作,那么就应该包含动词;若执行操作时还需要参数...,则应该在动词后面加上一个或多个名词 不要使用str这种简称,应该用string这样的全称 BOOL值属性应该加is前缀,如果某方法返回非其属性的BOOL值,那么应该根据其功能处理,选用has或is当前缀...将get 这个前缀留给那些借由“输出参数”来保存返回值的方法 类与协议的命名 为类和协议的名称加上前缀 参考 Effective+Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法

    12010

    Objective-C 的运行时中最具争议的黑魔法:Method Swizzling

    如果你对 Objective-C 这方面的特性不是很了解的话,这是很值得推荐使用的一个特性,因为 method swizzling 可以通过交换 selector 来改变函数指针的引用。...到此我们已经知道为什么,应该在哪些地方使用 method swizzling,下面介绍如何使用 method swizzling: +load vs +initialize swizzling应该只在+...在 Objective-C 的运行时中,每个类有两个方法都会自动调用。+load 是在一个类被初始装载时调用,+initialize 是在应用第一次调用该类的类方法或实例方法前调用的。...该方法为当前CPU架构使用标准的C方法调用来实现。该方法的第一个参数指向调用方法的自身(即内存中类的实例对象,若是调用类方法,该指针则是指向元类对象metaclass)。...阅读 Objective-C Runtime Reference 并且浏览 能够让你更好理解实现原理。

    47010

    六个方向关于iOS100个面试题,你都会了吗?

    为什么Cocoa Touch的类名称是以两个大写字母开头的? Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系? 为什么Optional在Swift语言中非常重要?...在Swift中,什么情况下能使用NSError ,什么情况下不能? 请说明如何使用Instancetype及其重要性。 在Swift中,什么时候该用let,什么时候该用var?...如何防止用户在使用过程中遇到新的Bug? Objective-C的类是怎么执行的?Objective-C Runtime是如何实现的? iOS是如何提高安全性,保护用户隐私信息的?...什么时候用“弹出(Popover)”属性最为合适? Split-view Controller是什么? 选取器视图(Picker View)适合存放哪类内容?...应该在什么情况下使用标签、文本域和文本视图? 分段控件(Segmented Control)的作用是什么? 模态视图(Modal View)是什么? iOS通知属于什么类型?

    3.6K50

    iOS程序员面试,绝对会遇到这些问题!

    为什么Cocoa Touch的类名称是以两个大写字母开头的? Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系? 为什么Optional在Swift语言中非常重要?...在Swift中,什么情况下能使用NSError ,什么情况下不能? 请说明如何使用Instancetype及其重要性。 在Swift中,什么时候该用let,什么时候该用var?...如何防止用户在使用过程中遇到新的Bug? Objective-C的类是怎么执行的?Objective-C Runtime是如何实现的? iOS是如何提高安全性,保护用户隐私信息的?...什么时候用“弹出(Popover)”属性最为合适? Split-view Controller是什么? 选取器视图(Picker View)适合存放哪类内容?...应该在什么情况下使用标签、文本域和文本视图? 分段控件(Segmented Control)的作用是什么? 模态视图(Modal View)是什么? iOS通知属于什么类型?

    1.4K20

    ReactNative 原理解析-通信

    原理概述 首先要明白的一点是,即使使用了 React Native,我们依然需要 UIKit 等框架,调用的是 Objective-C 代码。...很多介绍 React Native 的文章都会提到 “JavaScript 线程” 的概念,实际上,它表示的是 Objective-C 创建了一个单独的线程,这个线程只用于执行 JavaScript 代码...这样,无论是哪一方调用另一方的方法,实际上传递的数据只有 ModuleId、MethodId 和 Arguments 这三个元素,它们分别表示类、方法和方法参数,当 Objective-C 接收到这三个值后...Method 暴露给 JavaScript 的方法需要用 RCT_EXPORT_METHOD 这个宏来标记,简单来说,它为函数名加上了 rct_export 前缀,再通过 runtime 获取类的函数列表...生成模块配置表并写入 JavaScript 端 在前文中我们没有提到 JavaScript 是如何知道 Objective-C 要暴露哪些类的(目前只是 Objective-C 自己知道)。

    1.4K20

    100个iOS开发设计程序员面试题汇总,你将如何作答?

    ·为什么CocoaTouch的类名称是以两个大写字母开头的? ·Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系? ·为什么Optional在Swift语言中非常重要?...在Swift中,什么情况下能使用NSError,什么情况下不能? ·请说明如何使用Instancetype及其重要性。 ·在Swift中,什么时候该用let,什么时候该用var?...如何防止用户在使用过程中遇到新的Bug? ·Objective-C的类是怎么执行的?Objective-CRuntime是如何实现的? ·iOS是如何提高安全性,保护用户隐私信息的?...·什么时候用“弹出(Popover)”属性最为合适? ·Split-viewController是什么? ·选取器视图(PickerView)适合存放哪类内容?...·应该在什么情况下使用标签、文本域和文本视图? ·分段控件(SegmentedControl)的作用是什么? ·模态视图(ModalView)是什么? ·iOS通知属于什么类型?

    1.5K40

    关于Objective C编码规范,这些你一定要会

    https://juejin.im/post/5cb812386fb9a068553e1ef4 背景:这里有些关于编码风格Apple官方文档,如果有些东西没有提及,可以在以下文档来查找更多细节: The Objective-C...对于官方的raywenderlich.com书、初学者工具包或教程,前缀’RWT’应该被使用。 常量应该使用驼峰式命名规则,所有的单词首字母大写和加上与类名有关的前缀。...orangeColor]]; UIApplication.sharedApplication.delegate; 字面值 NSString、NSDictionary、NSArray和NSNumber的字面值应该在创建这些类的不可变实例时被使用...break; } 私有属性 私有属性应该在类的实现文件中的类扩展(匿名分类)中声明,命名分类(比如RWTPrivate或private)应该从不使用除非是扩展其他类。...nonatomic) ADBannerView *iAdView; @property (strong, nonatomic) UIWebView *adXWebView; @end 布尔值 Objective-C

    44130

    100个iOS开发面试题汇总

    38 为什么Cocoa Touch的类名称是以两个大写字母开头的? 39 Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系?...在Swift中,什么情况下能使用NSError ,什么情况下不能? 42 请说明如何使用Instancetype及其重要性。 43 在Swift中,什么时候该用let,什么时候该用var?...如何防止用户在使用过程中遇到新的Bug? 48 Objective-C的类是怎么执行的?Objective-C Runtime是如何实现的? 49 iOS是如何提高安全性,保护用户隐私信息的?...66 什么时候用“弹出(Popover)”属性最为合适? 67 Split-view Controller是什么? 68 选取器视图(Picker View)适合存放哪类内容?...69 应该在什么情况下使用标签、文本域和文本视图? 70 分段控件(Segmented Control)的作用是什么? 71 模态视图(Modal View)是什么?

    1.3K30

    【Protobuf协议】004-定义服务(Service)、JSPN映射、选项、生成访问类

    (文件选项):设置Objective-C类的前缀,添加到所有Objective-C从此.proto文件产生的类和枚举类型。...没有默认值,所使用的前缀应该是苹果推荐的3-5个大写字符,注意2个字节的前缀是苹果所保留的。...deprecated(字段选项):如果设置为true则表示该字段已经被废弃,并且不应该在新的代码中使用。在大多数语言中没有实际的意义。...十六、生成访问类 可以通过定义好的.proto文件来生成Java,Python,C++, Ruby, JavaNano, Objective-C,或者C# 代码,需要基于.proto文件运行protocol...--objc_out在目标目录DST_DIR中产生Object代码,可以在Objective-C代码生成参考中查看更多。

    10510

    使用 pod lib create 创建库

    Objective-C或Swift 你问的第一个问题是你想要构建一个pod的语言。对于这两个选择,CocoaPods会将你的库设置为一个框架。...在Objective-C中,我们选择了两个流行的测试框架; Specta / Expecta和Kiwi。如果您无法决定,请使用Specta / Expecta。...Specta / Expecta Objective-C&Cocoa的轻量级TDD / BDD框架。 GitHub仓库 Kiwi Kiwi是一个用于iOS开发的行为驱动开发库。...Objective-C的前缀 要结束Objective-C项目,我们想知道您的类前缀。这意味着我们可以使CocoaPods生成的所有类都适合您的样式,所有从Xcode内部生成的类都将以您的前缀开头。...我们知道Apple正在弃用前缀,但实际上它们仍然在Objective-C代码库中占有一席之地。 Pod Lib创建模板 随着问题的结束,我们运行pod install新创建的项目。

    3.8K10

    译文: 低调奢华有内涵的「Runtime」

    这两种语言可能根本上不一样,但实际上可以很好地互补。 虽然Swift是用来取代Objective-C的,但苹果依然继续维护Ovjective-C。...事实上,苹果还特别声明: 「当你用Objective-C编程的时候,并不需要用到Runtime库」 这就很容易理解为什么有人会这样说:在不了解Objective-C Runtime下去使用它,将会是危险的...也就是,Objective-C的Runtime,允许大伙儿在runtime(运行时)创建、修改、移除以下内容: 类/Class 方法/Method 实现/Implementation 属性/Properties...使用关联对象(Working with associated objects) 有时候你会有这样的需求:要在一个类的category添加一个属性,不幸的是,在Objective-C是不能这样干的(译者:...如果可以,避免使用Objective-C的Runtime,只有在手头上的问题不能用其他方法解决时,才使用它(小心使用)。 当你使用Runtime时,要清醒知道自己在做什么。

    97940

    【iOS开发】Cocoapods详解-使用及创建私有库

    一、前言 第三方代码管理 在多个项目间管理公共代码 组件化 二、项目使用CocoaPods 初始化 $ pod init 第一行:指明项目支持的iOS版本 platform :ios, '8.0'...workspace 'MyWorkspace' 什么时候用pod install 什么时候用pod update pod install 用来为项目安装新的pod,不管你以前有没有运行过pod install...`pod update [PODNAME] 只有当你要更新已经存在的库到一个最新的版本时才使用。...官方模版会有几个选项: 用什么语言 Objective-C or Swift 是否创建一个Demo项目 是否要一个测试框架 UI测试框架 Objective-C的前缀 目录结构: ?...podspec文件即可 通过命令pod spec create xxx来创建podspec文件,更改文件对应的设置就可以 五、私有�Spec Repo仓库创建 首先在github或者自己的git服务器上创建一个

    72850

    Objective-C实现链式编程语法(DSL)

    - Carlson, University of Wisconsin 前言 熟悉Objective-C这一门编程语言的人都知道,Objective-C中方法的调用都是通过中括号[]实现的。...好在Objective-C在iOS4.0之后推出了block这个语法(相当于其他语言中的匿名函数)。我们可以利用block的来实现Objective-C方法的链式调用。...obj = DSLObject.new.name(@"ws").age(27).address(@"beijing"); 很明显,相比较传统的Objective-C的方法调用方式,使用点语法进行方法调用更加简洁连贯...而中间类方式实现链式调用就可以避免前缀的问题。 中间类方式实现 上面已经说过,使用category的方式给类扩展链式调用的方法,我们必须要和原生的方法进行区分(比如增加前缀)。...使用category实现链式语法,需要加前缀。使用中间类来实现链式语法,需要有一个特定的方法返回被配置的对象。两种方式各有利弊。 最后附上代码地址。

    8.1K20

    Objective-C>读书笔记

    主要摘录了《 Effective Objective-C》里的编写高质量的方法; 1 熟悉Objective -C 1.1 OC 起源 OC 为C语言增加了面对对象的特性,是 C 的超集,并且使用动态绑定的消息结构...这类常量会出现在全局符号表里,所以其名称应加以区分,通常使用类名做前缀; 全名法则:若常量仅在编译单元内可见,则在前面加字母 k,如果在类外可见,则通常以类名为前缀; 1.5 用枚举表示状态、选项、状态码...、应用程序或二者皆有关联之名作为类名的前缀,并在所有代码中均使用这一前缀; 若自己所开发的程序库中用到了第三方库,则应为其中的名称加上前缀; OC 没有其他语言那种内置的命名空间机制。...; 6 块与大中枢派发 6.1 理解“块”这一概念 块是 C、C++、Objective-C 中词法的闭包; 块可接受参数,也可返回值; 块可以分配在栈或堆上,也可以是全局的。...分配在栈上的块可拷贝到堆里,这样的话,就和标准的Objective-C 对象一样,具备引用计数了; 块所占的内存区域是分配在栈中的。这也就是说块只在定义它的那个范围内有效。

    49220

    iOS中动态更新补丁策略JSPatch运用基础一

    其框架小巧,代码简洁,并且通过系统的JavaScriptCore框架与Objective-C进行交互,这使其在安全性和审核风险上都有很强的优势。...三、JavaScript与Objective-C交互的基础方法         要使用JSPatch来进行Objective-C风格的方法编写,需要遵守一些JavaScript与Objective-C交互的规则...1.在JavaScript文件中使用Objective-C类    在编写JavaScript代码时如果需要用到Objective-C的类,必须先对这个类进行require引用,例如,如果需要使用UIView...这个类,需要在使用前进行如下引用: require('UIView') 同样也可以一次对多个Objective-C类进行引用: require('UIView, UIColor, UILabel') 还有一种更加简便的写法...                }             }             ) 如果在重写了类中的方法后要调用原方法,需要使用ORIG前缀,示例如下: defineClass('ViewController

    88820
    领券