Moya https配置方法
摘要:准备 iOS做https适配时对服务器是有一定要求的,服务端必须要是一个符合ATS(App Transport Security)要求的HTTPS。简单说要满足以下几个要求: 1.Transport Layer Security协议版本要求TLS1.2以上 2.服务的Ciphers配置要求支持For
阅读全文
根据图片URL获取图片的尺寸【Swift语言实现】
摘要:import UIKit extension UIImage { /// 获取网络图片尺寸 /// /// - Parameter url: 网络图片链接 /// - Returns: 图片尺寸size class func getImageSize(_ url: String?) -> CGSiz
阅读全文
[转]iOS7中UITextView contentsize改变时机
摘要:在iOS7以下版本中,对UITextView设置了text属性,则contentsize就会变化,从而可以根据contentsize的变化来改变UITextView高度来做出TextView高度随着输入字符变化而变化。在iOS7系统中设置text并不能立即导致contentsize的变化,而是在layoutsubview时会计算一次contentsize。估计iOS7中是text改变之后,UITextView 成为firstResponder之后会调用layoutIfNeeded。要计算高度一种UITextView内容对应的高度,需要自己用NSString的sizeWith** 系列函数来计算
阅读全文
关于UITableView的一点儿新认识
摘要:之前虽然已经学习IOS开发很久了,但是发现好多东西都没有理解到位。今天才彻底弄明白UITableVIewCell的创建过程,所以详细写下来,以供以后参考理解。UITableView通过调用方法 -(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath来生成单元格UITableViewCell,而创建生成UITableViewCell的最大个数则有每个cell的高度height和窗口高度screenHeight共同决定,也即生成的cell个数为count=sc
阅读全文
In App Purchases(IAP 应用程序內购买): 完全攻略 (转)
摘要:概况IAP能正常工作的秘诀:分成两个步骤:创建及提取产品描述购买产品第一个步骤是你可能遇到问题的部分。一旦你在代码中成功地获取了产品描述,编写购买产品的代码不过是小菜一碟。我们先看看步骤1。创建及提取产品描述下面是有关创建产品及提取其描述的非常粗略的步骤:创建唯一的App ID生成及安装新的provisioning profile文件在Xcode中更新 bundle ID 及 code signing profile如果还没做的话,请在iTunes Connect中提交有关你程序的 metadata如果还没做的话,请在iTunes Connect中提交你程序的二进制码为IAP添加新产品编写提取
阅读全文
Objective-C学习笔记
摘要:1、#import是GCC编译器提供的,Xcode在编译Objective-C、C和C++程序时都会使用它,#import可保证头文件只被包含一次,而不论此命令实际上在那个文件中出现了多少次。 在C语言中,程序员通常使用基于#ifdef命令的方案来避免一个文件包含另一个文件,而后者又包含第一个文件的情况。而在Objective-C中,程序员使用#import实现这个功能。2、NSLog()与printf()相比添加了一些特性,例如时间戳、日期戳和自动附加换行符(‘\n’)等。3、Objective-C中的BOOL实际上是一种对带符号的字符类型(signed char)的定义(typedef),
阅读全文
IOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
摘要:1、UINavigationController导航控制器如何使用UINavigationController可以翻译为导航控制器,在IOS里经常用到。我们看看它的如何使用:下面的图显示了导航控制器的流程。最左侧是根视图,当用户点击其中的General项时 ,General视图会滑入屏幕;当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕。相应地,在对象管理上,导航控制器使用了导航堆栈。根视图控制器在堆栈最底层,接下来入栈的是General视图控制器和Auto-Lock视图控制器。可以调用pushViewControllerAnimated:方法将视图控制器推入栈顶,也可以
阅读全文
两个操作字符串的方法:读取指定位置的字符和找出某个字符串的位置
摘要:在对NSString的操作中,API中没有提供现成的从字符串中提取指定位置字符的方法,也没有提供从所给的字符串中找出某个字符串的位置的方法,下面是我写的两个进行此类操作的类方法,如有不妥的地方请批评指正。#pragma mark 从一个字符串中提取指定位置的字符+(NSString *)getNSString:(NSString *)_string atIndex:(int)_index{NSString *tempString;tempString = nil;if((_string)&&(_index>=0)){//先计算索引值是否大于字符串的长度,如果大于字符串的长
阅读全文
从 C++ 到Objective-C
摘要:Objective-C 可以算作 Apple 平台上“唯一的”开发语言。很多 Objective-C 的教程往往直接从 Objective-C 开始讲起。不过,在我看来,这样做有时候是不合适的。很多程序员往往已经掌握了另外一种开发语言,如果对一门新语言的理解建立在他们已有的知识之上,更能 起到事半功倍的效果。既然名为 Objective-C,它与 C 语言的联系更加密切,然而它又是 Objective 的。与 C 语言联系密切,并且是 Objective 的,我们能够想到的另外一门语言就是 C++。C++ 的开发人员也更普遍,受众也会更多。于是就有了本系列,从 C++ 的角度来讲述 Objec
阅读全文
iphone中如何进行多线程编程
摘要:多线程在各种编程语言中都是难点,很多语言中实现起来很麻烦,objective-c虽然源于c,但其多线程编程却相当简单,可以与java相媲美。这篇文章主要从线程创建与启动、线程的同步与锁、线程的交互、线程池等等四个方面简单的讲解一下iphone中的多线程编程。一、线程创建与启动线程创建主要有二种方式:- (id)init; // designated initializer- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument;当然,还有一种比较特殊,就是使用所谓的convenient method,这
阅读全文
iPhone/Mac Objective-C内存管理教程和原理剖析(四)系统自动创建新的autorelease pool
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且必须包含此版权声明的完整内容。版本1.1发表于2010-03-08四系统自动创建新的autorelease pool在生成新的Run Loop的时候,系统会自动创建新的autorelease pool(非常感谢网友hhyytt和neogui的提醒)。注意,此处不同于xcode在新建项目时自动生成的代码中加入的autorelease pool,xcode生成的代码可以被删除,但系统自动创建的新的auto
阅读全文
iPhone/Mac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com,且必须包含此版权声明的完整内容。版本1.1发表于2010-03-08三@property (retain)和@synthesize的默认实现在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底发生了什么(retain property的默认实现)。property实际上是getter和setter,针对有retain参数的propert
阅读全文
iPhone/Mac Objective-C内存管理教程和原理剖析(二)口诀与范式
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com,且必须包含此版权声明的完整内容。版本1.1发表于2010-03-08二口诀与范式1口诀。1.1谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用release或autorelease。换句话说,不是你创建的,就不用你去释放。例如,你在一个函数中alloc生成了一个对象,且这个对象只在这个函数中被使用,那么你必须在这个函数中调用release或a
阅读全文
iPhone/Mac Objective-C内存管理教程和原理剖析(一)基本原理
摘要:版权声明此文版权归作者Vince Yuan (vince.yuan#gmail.com)所有。欢迎非营利性转载,转载时必须包含原始链接http://vinceyuan.cnblogs.com/,且必须包含此版权声明的完整内容。版本1.1发表于2010-03-08前言初学objectice-C的朋友都有一个困惑,总觉得对objective-C的内存管理机制琢磨不透,程序经常内存泄漏或莫名其妙的崩溃。我在这里总结了自己对objective-C内存管理机制的研究成果和经验,写了这么一个由浅入深的教程。希望对大家有所帮助,也欢迎大家一起探讨。此文涉及的内存管理是针对于继承于NSObject的Class
阅读全文
协议(protocol) & 委托(delegate)
摘要:协议(protocol),就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现。委托(delegate),顾名思义就是委托别人办事,就是当 一件事情发生后,自己不处理,让别人来处理。举个浅显的例子: 我上班的工作主要内容包括 (1)写代码(2)写文档(3)测试程序(4)接电话(5)会见客户(1)(2)我自己全权负责,但是后面(3)(4)(5)我不想或者不方便自己做,所以我想找个助手(delegate)帮我做这些事,于是我定了一个招聘要求(Protocol),里写明我的助手需要会做(3)(4)(5)这三件事。很快,我招到一个助手。 即:我....
阅读全文
IOS5中strong和weak的用法
摘要:iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性(iOS 5 之前不支持ARC)strong 用来修饰强引用的属性;@property (strong) SomeClass * aObject;对应原来的@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;weak 用来修饰弱引用的属性;@property (weak) SomeClass * aObject;对应原来的@property (assign) SomeClass * aObject;__weak, __
阅读全文
OC中的selector
摘要:@selector()基本可以等同C语言的中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而Object-C的类不能直接应用函数指针,这样只能做一个@selector语法来取. 它的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)?因此我们有如下代码。一.取得selector值. C函数指针 int add(int val) { return val+1; } int (* c_func)(int val); //定义一个函数指针变量 c_func = add ; //把函数addr地址直接赋给c_func object...
阅读全文
delegate VS notification
摘要:1、Delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate极值使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。Notification:消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。2、delegate比notification效率高。3、delegate方法比notification更加直接。delegate方法往往需要关注返回值,也就是delegate方法的结果。比如-win
阅读全文