- 博客(24)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 招聘靠谱程序员系列:6 @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的?
答:1)、@property 的本质是:@property = ivar + getter + setter翻译出来就是:属性(property)等于实例变量(ivar)加上存取方法(getter和setter,实例变量用于存储数据,而存取方法用来读取写入该实例变量的数据有swift开发经验的人对这个感触应该表较深(存储属性和计算属性)编译器会自动为@property添加实例变量和存取...
2018-12-10 09:26:05 301
原创 招聘靠谱程序员系列:5 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
答:1)、让自己的类可以使用copy修饰符的步骤:a)、让自己的类遵循NSCopying协议b)、实现NSCopying协议中必须实现的代理方法: - (id)copyWithZone:(NSZone *)zone;示例代码:- (id)copyWithZone:(NSZone *)zone { //创建实例的方式比较特殊 Person *p = [[[self...
2018-12-09 22:23:02 619
原创 招聘靠谱程序员系列:4 这个写法会出什么问题: @property (copy) NSMutableArray *array
答:1)、copy修饰的属性进行赋值的时候会生成一份不可变的副本,此时修改副本array(增删之类的操作)会提示找不到方法而报异常;2)、不写原子性修饰词默认使用atomic,而atomic性能比nonatomic差很多。...
2018-12-09 17:22:46 428
原创 招聘靠谱程序员系列:3 怎么用 copy 关键字?
答:1)、一般对于那些遵循NSCopying协议的类才能使用copy,例如针对那些有不可变类型和可变类型的类,NSString, NSArray 与之对应的是NSMutableString, NSMutableArray等。因为他们之间可能进行赋值操作,为确保对象中的字符串值不会无意间变动,应该在设置新属性值时拷贝一份。2)、block一般也使用copy,这是MRC遗留下来的使用习惯tips...
2018-12-09 15:26:56 447
原创 招聘靠谱程序员系列:2 什么情况使用 weak 关键字,相比 assign 有什么不同?
答:1)、什么情况下使用weak:a)、在ARC中修饰代理b)、使用@IBOutlet连接控件c)、当block会造成循环引用2)、与assign的不同assign可以用于非对象类型,而weak必须用于对象类型参考资料:1、区别1).修饰变量类型的区别weak 只可以修饰对象。如果修饰基本数据类型,编译器会报错-“Property with ‘weak’ attrib...
2018-12-09 14:29:29 323
原创 招聘靠谱程序员系列:1 代码风格优化与纠错
风格纠错答:// 1)、使用NS_ENUM而不是C语言类型的枚举enumtypedef NS_ENUM(NSInteget, XBYGender) { //使用gender比sex正式 XBYGenderMan, XBYGenderWoman}// 2)、NSString一般使用copy修饰// 3)、一般定义一个初始化方法来对属性进行赋值,而把具体属性隐藏起来(...
2018-12-09 13:59:06 287
原创 LeetCode系列:4 Median of Two Sorted Arrays
Q:There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).You may assume nums1 and n...
2018-12-03 17:43:49 147
原创 Mac生成多个ssh并配置不同域名
1.前言有时候我们会有多个git账号,如GitHub,GitLab,这时如果使用同一个邮件注册,那不会有问题,但是假如用的是不同的邮件注册账号,这就需要生成不同的ssh文件并为其配置相应的域名。2.生成一个SSH-Key$ ssh-keygen -t rsa -C "youremail@email.com"//自己git账号对应的邮箱如若一路enter,你会得到:id_rsaid_r...
2018-12-03 14:37:19 739
原创 LeetCode系列:3 Longest Substring Without Repeating Characters
Q:Given a string, find the length of the longest substring without repeating characters.Example 1:Input: "abcabcbb"Output: 3 Explanation: The answer is "abc", with the
2018-11-16 15:46:49 149
原创 LeetCode系列:2 Add Two Numbers
Q:You are given two non-empty linked lists representing two nonnegative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return ...
2018-11-05 17:01:59 141
原创 LeetCode系列:1 Two Sum
Q:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the same...
2018-11-01 17:49:41 134
原创 iOS实战之从左往右自动填充布局页面
这里主要讲的就是控件宽度可变时的计算:方法一: 这里使用一个宽度可变的Button,宽度不变的两个Label从左往右依次排布来测试。这里使用三组组合,每一组都用一个UIView包裹。首先为了测试,Button的标题,依次为:NSArray *btnTitle = @[@"我是一个长标题,很长很长很长很长的标题",@"我是短标题",@"标题"];titleLB的文本:t...
2018-04-07 13:53:36 1467
原创 iOS笔记之UIButton的UIEdgeInsetsMake使用详解
1、UIEdgeInsetsMake介绍首先简单介绍一下UIEdgeInsetsMake 引用:UIEdgeInsetsMake使用详解的图片和讲解,再加上自己的理解与实现先看定义typedef struct UIEdgeInsets { CGFloat top, left, bottom, right; // specify amount to inset (positi...
2018-04-07 13:49:40 1590
原创 iOS实战之调起QQ加群页和临时会话页
很简单的两个功能,不过都需要先将QQ加入info.plist白名单中LSApplicationQueriesSchemesmqqOpensdkSSoLogin mqzone mqq mqqapi mqqopensdkapiV3 mqqopensdkapiV2 mqqapiwallet mqqwpa mqqbrowser 按需求加就好了。跳转到QQ加群页:...
2018-04-07 11:40:38 1099
原创 iOS开发之Runtime初探
一:基础概念RunTime简称运行时,就是系统在运行的时候的一些机制,其中最主要的是消息机制。 对于C语言,函数的调用在编译的时候会决定调用哪个函数,编译完成之后直接顺序执行,无任何二义性。 OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编 译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段就会报错)。
2017-06-20 10:24:53 378
原创 iOS五种页面传值方式
页面传值是很常用的一个东西,这里介绍比较常用的五种:属性传值,block传值,代理传值,单例传值,通知传值。 (一)属性传值 实践方案:第二个界面中的lable显示第一个界面textField中输入的文本 实践步骤: 首先我们建立一个RootViewControllers和一个DetailViewControllers(detail页面的label显示root页面textField输入的内
2016-11-02 19:36:39 2094
原创 iOS开发之NSDictionary与NSMutableDictionary
NSDictionary不可变字典1、[NSDictionary dictionaryWithObjectsAndKeys:..]: 使用键值对儿直接创建字典对象,结尾必需使用nil标志结束。 2、[NSDictionary initWithObjectsAndKeys:..]:使用键值对儿初始化字典对象,结尾必需使用nil标志结束。 3、[dictionary count]: 得到字典的...
2016-10-14 17:07:29 7967
原创 iOS开发之UILabel(富文本)
1、常见的属性及说明NSFontAttributeName //字体NSParagraphStyleAttributeName //段落格式 NSForegroundColorAttributeName //字体颜色NSBackgroundColorAttributeName //背景颜色NSStrikethroughStyleAttributeName //删除线格式NSUnd
2016-10-14 15:21:47 2940
原创 布局之extendedLayout与sizeToFit
iOS 7以后在ViewController里面引进了一系列属性用于管理页面布局。 extendedLayout有几个相似的参数:edgesForExtendedLayout automaticallyAdjustsScrollViewInsets extendedLayoutIncludesOpaqueBars下面是Apple官方提供的文档解释,看过之后还是觉得太过于抽象,于是用代码来实验
2016-09-27 16:19:53 403
原创 iOS开发之CocoaPods使用
CocoaPods安装使用教程与常见详情可以查看下列两篇博客: 最新Mac OS X 10.11.1 安装cocoapods及使用详解 CocoaPods的安装使用和常见问题不过看别人的是这样,但是到了自己身上有可能又是另一番光景。我来简单说说自己的安装体验:sudo gem install cocoapods这个需要访问墙外,所以我们通过换源的方式解决这个问题。 安装步骤: (1) $
2016-09-23 15:02:00 1469
原创 iOS开发之通讯录
现在的软件基本都有通信功能,所以做一个通讯录是开发人员必备的一个技能,界面不算优美,但是大部分功能都有,我们这里用了github上一个汉字转拼音的工具(https://github.com/c6357/YUChineseSorting)。 先说说这个工具,这个工具可以对一系列的汉字转成拼音,并返回索引与索引对应的数组。 NSArray *stringsToSort = [NSArray arr
2016-09-22 16:00:51 394
原创 那些年踩过的坑之UINavigationController
一入编程深似海,从此踩坑是日常。开发之道,总会遇到形形色色的坑,现在记录下来,让以后的自己少踩一些相似的坑。使用UINavigationController踩过的坑:坑一: 想要将navigationBar的颜色设置成蓝色,想当然的设置navigationBar背景色为blue,结果坑如图a所示,设置颜色为蓝色,显示成浅紫色(WTF????没有找到问题所在,有大神知道原理可以给我留言)s
2016-09-21 16:24:33 438
原创 Today Widget介绍
简介:Today Widget是App Extension的一种,作用是用户在使用iOS或者Mac OS下拉功能时,能够刷新显示一些用户关心的消息,比如看天气状况,查看股票行情,而且Today Widget能实现一些很小的功能,其实可以把他看成是一个阉割版的APP,一个运行在独立进程中的ViewController。回到Today Widget的讨论中,我们先来看看Today Widget的生
2015-08-31 19:36:29 2500
原创 Objective-C遍历数据的几种方式
遍历的几种方式: 1、通过索引,如通过数组下标来遍历数组 -objectAtIndex() 2、使用NSEnumerator容器来存放数据项,通过nextObject来获取下一个数据 3、使用快速枚举(os x10.5以后) 4、最新的代码块方法(os x 10.5以后)第一种通过下标的方式来遍历数据,这种方式太简单,这里不显示示例代码 第二种示例代码:
2015-08-29 11:35:47 528
PageControl与ScrollView的联合使用
2015-08-20
iOS动态添加删除Tableview Section的Demo,有没有大神有
2017-01-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人