大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

简单了解 VBO,FBO

glVertexAttribPointer(_positionSlot, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), 0);) RBO (Render Buffer Object) RBO 是一块2D图像缓存,能够用于存储color,depth,stencil值,也就是可以作为 fbo的color或depth或stencil attachment。但是这个rbo不能直接作为纹理使用。 http://blog.csdn.net/ldpxxx/article/details/17304273 renderbufferStorage 关联屏幕渲染, 缓冲区中最后显示在屏幕[_context presentRenderbuffer: GL_RENDERBUFFER ]; 参考: VBO FBO PBO

Kotlin语法梳理(二)

Kotlin语法梳理(二) Kotlin语法梳理(一) 目录 函数 Kotlin中的函数很灵活,它可以独立于类或接口之外存在,即顶层函数,也就是全局函数;也可以存在于别的函数中,即局部函数;还可以存在于类或接口之中,即成员函数。 fun 函数名(参数列表):返回值类型{ 函数体 return 返回值 } fun add(n1:Int

我出的安卓面试题(持续更新中)

animator2.setDuration(300); ObjectAnimator animator3 = ObjectAnimator.ofFloat(first_view,"scaleY",1f,0.9f); animator3.setDuration(300); 在执行前打印了控件宽度是1000,请问执行完属性动画后,控件的宽度是多少?为什么?

iOS-模仿苹果时钟选择控件

_alramLayer) { _alramLayer = [[CAShapeLayer alloc] init]; } #pragma mark - Method - Method - -(void)beiginRotationWithAngle:(CGFloat)angle beiginPiont:(CGPoint)point{ switch (self.rotationType) { case kRotationType_StartAngle: [self changeStartAngle:angle]; } /** 绘制BezierPath */ -(UIBezierPath *)drawAlarmPathWithStartAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle{ CGRect circleRect = CGRectMake(kAlarmViewRadius,kAlarmViewRadius, self.bounds.size.width, self.bounds.size.height);

Swift 数据存储

var phone: String! NSInteger } override init() { } } 序列化 //创建一个全局路径,即要保存的位置: let path = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as NSString let filePath = path.stringByAppendingPathComponent("my_Archiver") let myArchive : MyArchiveModel = MyArchiveModel() myArchive.name = "Yang" myArchive.phone = "888888" myArchive.age = 24 //归档 print("\("save")") NSKeyedArchiver .

浅谈 iOS 开发框架的重要性

浅谈 iOS 开发框架的重要性 背景 最近公司打算开发一个新 IM 通讯的项目, 借着这个机会我觉得自己必须得在框架整体框架搭建上做一下深入研究与反思了。不论是前端,后台,移动端,结合到现实生活中,处处都会涉及到框架的应用,一个初期就设计优良的架构,素容置疑在项目的可维护性,扩展性,健壮性肯定都有很大的提升。所以我们必须要在开发之前在架构上面多下功夫!

iOS 本地推送

content.userInfo = userInfo; UNNotificationAttachment *att = [UNNotificationAttachment attachmentWithIdentifier:@"att1" URL:[NSURL fileURLWithPath:path] options:nil error: error]; } for (UILocalNotification *notify in notificaitons) { if ([[notify.userInfo objectForKey:@"id"] isEqualToString:@"LOCAL_NOTIFY_SCHEDULE_ID"]) { if (@available(iOS 10.0, *)) { [[UNUserNotificationCenter currentNotificationCenter] removePendingNotificationRequestsWithIdentifiers:@[LocalNotiReqIdentifer]];

iOS 一键打包发布测试和App Store

bashrc 在终端输入source ~/.bash_profile 再输入rvm -v查看安装成功 配置自动打包发布 JiaJung 写的 Shell脚本,Download 下来 拖到工程根目录 然后配置下脚本文件shell.sh 这是俩个需要配置的地方,很详细了 scheme_name 一般和project_name工程名一样 这个账号密码不用多说,别填

KVC的查询顺序

KVC的查询顺序 一、自定义一个TestObject类,测试KVC取值的查询顺序 以下是TestObject的源码,你没看错,就是这样一个没有实现任何方法,没有任何属性的类。我们用TestObject类来探究KVC取值的查询顺序。 . } 控制台打印: image.png 4.若前三个方法都没有实现,KVC会查找第四个方法_name。 #import "TestObject.h" @interface TestObject() @end @implementation TestObject //- (NSString *)getName { // // return @"getName";

iOS 屏幕旋转shouldAutorotate

} 实现完成这三个方法即可保证。navigationController的横竖屏表现会依照他的rootViewController的设置来表现。 3.对于在TabbarController里面嵌套的Controller。即创建方式如下: - (void)setInitTabBar{ NSArray *baseArray = @[@"ViewController",@"SecondViewController",@"NaviViewController"]; } 2.如果是从页面A present方式跳转的页面、那么就将页面A的方法 //- (BOOL)shouldAutorotate{ // return NO;

ios开发 - oc代码质量提高(一)

v.backgroundColor = [UIColor blackColor]; } 写法好处: 成块分离出来,容易阅读。 同时不需要再定义一个headView变量,同时因为addSubview的强引用,view会存放在堆空间,不会被释放掉。 2.成员变量和属性变量 @interface ViewController () { UIView *memberView; //成员变量 } @property (nonatomic,strong) UIView *attributeView; 然后你还没有实现setter和getter方法 当程序运行student.age = 10; @synthesize attributeView;

MJRefresh源码解析

} 这里也许会存在疑问,在set方法中用到了属性设置的问题,如果是正常情况下,必须使用_header=header;的形式,否则会造成无限调用set方法导致循环的问题,而这里不会出现类似问题,self.mj_header会调用一次setMj_header的方法,setHeader将header的值实际赋给了mj_header,所以不会存在问题。 + (void)load { [self exchangeInstanceMethod1:@selector(reloadData) method2:@selector(mj_reloadData)];

iOS 面试之道 - 纠错 private & copy

} @end 打印结果如下: myTitle: abc - address: 0x608000441fe0 mutableTitle: abc - address: 0x608000441fe0 myTitle: abc123 - address: 0x608000441fe0 mutableTitle: abc123 - address: 0x608000441fe0 你会发现,用strong修饰的myTitle,在mutableTitle改变为abc123后,myTitle也变成了abc123,并且myTitle和mutableTitle指向的地址是一样的,都是0x608000441fe0。 再看用copy修饰的情况: @interface ViewController () @property(nonatomic, copy) NSString *myTitle;

iOS 动画十九:Intermediate Animations with UIViewProper

iOS 动画十九:Intermediate Animations with UIViewProper 1. Built-in timing curves 现在看一个例子,模拟器上面效果不好,最好真机上面看。 func toggleBlur(_ blurred: Bool) { // 1. 测试1 // UIViewPropertyAnimator.runningPropertyAnimator( // withDuration: 0.5, delay: 0.1, options: . 1 : 0 // }, // completion: nil // ) // 2. 测试2 // AnimatorFactory.fade(view: blurView, visible: blurred) // 3. 测试3 UIViewPropertyAnimator(duration: 0.55, curve: .

GCD的使用和原理

看看输出结果 {number = 3, name = (null)}---0 {number = 3, name = (null)}---1 {number = 3, name = (null)}---2 {number = 3, name = (null)}---3 很明显,这里是同一个线程,而且也确实是按照顺序执行的,那么接下来使用并发队列来操作。 dispatch_queue_t queue = dispatch_queue_create("com.example.gcdDemo", DISPATCH_QUEUE_CONCURRENT); dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC));

iOS 开发必知的小工具

ipa Finished dumping com.liyancong.kuq in 2.4 seconds DONE: /private/var/mobile/Documents/Dumped/com.liyancong.kuq-iOS8.0-(Clutch-2.0.4).bash_profie 中配置的变量: export THEOS=~/theos export PATH=$THEOS/bin:$PATH 配置之后,执行如下命令起效: source ~/.

马甲包指南 - 攻克 App Store 4.3 条款

3 条款主要针对谁】一方面源于很多大公司希望批量产出类似 App 进行 A/B 测试;另一方面源于很多小产品希望通过对相同的产品用不同的关键词来进行宣传,获取更多的流量(同一个 App,上 10 个马甲包,收入增 10 倍);这些行为破坏了 App Store 的生态,导致苹果会用非常严格的手段来进行打击。 【4.

NSURLProtocol处理特定URL用法与理解

} 7.运行你会发现一个更大的问题 死循环了 因为你用的是NSURLSessionDataTask发的请求 还会被拦截到 拦截到再发 再拦,所以我们要对我们在startLoading里的请求做一下标识不让它被拦截 原理就是我们在request对象里人为的添加键值进行标识是否被处理了 如果被处理了就在canInitWithRequest方法里返回No不拦截 //定义一个字符串做key static NSString *xiaDianDealDone = @"xiaDianDealDone";

Mac 开发之加载动画框架

Mac 开发之加载动画框架 最近因项目需要,本人写了内置六种加载动画的框架。 现Git 开源,简洁使用,调用方便。 先让大家浏览一下各个动画,如有需要,文末下载。 加载动画示例 使用步骤: 1.导入框架 框架 2.引入头文件 #import "MacProgressHUD.h" 3.使用需要的动画块 //纯文字(文本、时间) [MacProgressHUD showWaitingWithTitle:@"我是提示文字" time:5];

iOS开发笔记(九)— 数据库、Crash、内存问题分析

= KSTabBarHeight) { self.tabBar.height = KSTabBarHeight; 在这种情况下,self.delegate在remove掉之后self之后,self已经被释放,下面的self.data再进行赋值操作,就会出现异常情况。 解决方案:把 [self.delegete remove]; SInt16* buffer = NULL; } 场景2 下面这段代码是否能够正常运行? 如果可以,结果是什么? 如果不可以,是为什么? - (void)viewDidLoad { [super viewDidLoad]; memcpy(pBuf, "aaabbbcccddddeeefff", 10);