首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏酷酷的哀殿

    让Xcode 在 Release 场景下默认开启NSAssert

    经常用 NSAssert 的同学会发现如下现象:通过 Xcode 创建工程会默认在 Release 模式关闭 NSAssert。 模式统一用 Configuration-Release 场景代替 本篇文章会简单介绍 Xcode 的内部工作方式,并提供一种让Xcode 在 Configuration-Release 场景 下 默认开启NSAssert 在 SDK 的头文件中,NSAssert 会通过宏判断 NS_BLOCK_ASSERTIONS 是否被定义。 如果定义不存在,会将 NSAssert 重写为真正的断言处理逻辑否则,会重写为空逻辑do {} while (0) ? 总结 本篇文章通过简单介绍 Xcode 的内部工作方式,并提供一种让Xcode 在 Configuration-Release 场景 下 默认开启NSAssert 的方案。

    1.6K30发布于 2020-12-02
  • 来自专栏月亮与二进制

    iOS调试技巧——NSParameterAssert

    其实它使用了一个叫做NSAssert()的宏,这个宏用来断言,定义是这样的: #define NSAssert(condition, desc) 其中condition是要判断的条件,desc是条件为false NSParameterAssert其实用到了这个宏,只是专门用来判断给方法传入的参数是否为空,如果为空就会抛出一个异常说参数不合法,就如它的定义一样: #define NSParameterAssert(condition) NSAssert

    37220发布于 2021-11-23
  • 来自专栏云原生布道专栏

    【IOS开发基础系列】数据持久化专题

    = SQLITE_OK) {         sqlite3_close(db);         NSAssert(NO, @"OPEN SQLITE DATABASE ERROR!") NSAssert是断言函数,当断言失败时候打印信息。         NSAssert1是带有一个参数的NSAssert函数,此外还有NSAssert2等函数。          ", fileName);     if(sqlite3_open([fileName UTF8String], &db)) {         sqlite3_close(db);         NSAssert = SQLITE_DONE) {                 NSAssert(0, @"INSERT DATABASE ERROR!") = SQLITE_OK) {         sqlite3_close(db);         NSAssert(NO, @"OPEN DATABASE ERROR!")

    1K20编辑于 2023-10-16
  • 来自专栏欧阳大哥的轮子

    iOS标准库中常用数据结构和算法之二叉排序树

    NSAssert(strcmp(p1->key, "Bob")==0, @"oops!") tsearch("Lucy", &root, bintreecompar); //查找 node_t *p = tfind("Lily", &root, bintreecompar); NSAssert ; p = tfind("Lucy", &root, bintreecompar); NSAssert(p != NULL, @"oops!") ; //删除 p = tdelete("Jone", &root, bintreecompar); NSAssert(p == NULL, @"oops!") ; p = tdelete("Lucy", &root, bintreecompar); NSAssert(p != NULL, @"oops!")

    78020发布于 2019-05-06
  • 来自专栏欧阳大哥的轮子

    iOS标准库中常用数据结构和算法之查找

    第一次查找没有找到 student_t *pstudent = lfind("Lily", students, &count, sizeof(student_t), &lfindcompar); NSAssert count会加1 pstudent = lsearch(&newstudent, students, &count, sizeof(student_t), &lsearchcompar); NSAssert pstudent = lfind("Lily", students, &count, sizeof(student_t), &lfindcompar); NSAssert(pstudent ! bsearch(&age, students, sizeof(students)/sizeof(student_t), sizeof(student_t), &bsearchcompar); NSAssert

    63320发布于 2019-05-07
  • 来自专栏用户4624600的专栏

    iOS如何获取崩溃日志

    if ([FMAccountUtils isAppLogin] || UDBool(kUserDefault_IsCasualLook) == YES){ NSAssert(1 == 2, @"NSAssert test"); NSLog(@"NSAssert test",1); //断言崩溃 return; } 崩溃日志分析 crash文件文件: LuoJiFMIOS_2018-04-14-211457_ Information: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'NSAssert

    4.5K20编辑于 2022-12-05
  • 来自专栏音视频直播技术专家

    iOS下 AAC 音频编码

    NSAssert(AudioFormatGetPropertyInfo(kAudioFormatProperty_Encoders, sizeof(outAudioStreamBasicDescription.mFormatID count = size / sizeof(AudioClassDescription); //取出所有的描述符 AudioClassDescription descriptions[count]; NSAssert memcpy(&audioClassDescription, &descriptions[i], sizeof(audioClassDescription)); } } //创建软编码器 NSAssert (sampleBuffer, NULL, &inAaudioBufferList, sizeof(inAaudioBufferList), NULL, NULL, 0, &blockBuffer); NSAssert bufferSize; outAudioBufferList.mBuffers[0].mData = buffer; UInt32 ioOutputDataPacketSize = 1; //转码 NSAssert

    2.5K41发布于 2020-04-02
  • 来自专栏全栈程序员必看

    Masonry 源码解读(下)

    if ([attribute isKindOfClass:NSArray.class]) { ... } else { NSAssert attribute, NSLayoutRelation relation) { if ([attribute isKindOfClass:NSArray.class]) { NSAssert MASConstraint * (^)(MASLayoutPriority))priority { return ^id(MASLayoutPriority priority) { NSAssert if ([attribute isKindOfClass:NSArray.class]) { ... } else { NSAssert } else { _secondViewAttribute = secondViewAttribute; } } else { NSAssert

    78120编辑于 2022-06-29
  • 来自专栏落影的专栏

    iOS开发笔记(十)— Xcode、UITabbar、特殊机型问题分析

    二、NSAssert的断点和symbolic 断点 【问题表现】NSAssert是常见的断言,可以在debug阶段快速暴露问题,但是在触发的时候无法保持上下文; 【问题分析】NSAssert的本质就是抛出一个异常 如下,便可以NSAssert触发时捕获现场。 ? 同理,在Exception Breakpoint,还有Smybolic Breakpoint较为常用。

    1.6K20发布于 2019-02-15
  • 来自专栏编程之旅

    Objective-C开发编码规范

    obj),而使用NSAssert断言来处理。NSAssert是系统定义的宏。 NSAssert(myView !

    1.1K50发布于 2018-08-30
  • 来自专栏iOS 开发

    iOS Masonry实现九宫格布局

    commonSuperview = view; } previousView = view; } } NSAssert tailSpacing:(CGFloat)tailSpacing { if (self.count < 2) { NSAssert views to distribute need to bigger than one"); return; } if (warpCount < 1) { NSAssert tailSpacing { if (self.count < 1) { return self.copy; } if (warpCount < 1) { NSAssert

    2.6K40发布于 2018-06-05
  • 来自专栏正则

    AFNetworking源码探究(十七) —— _AFURLSessionTaskSwizzling实现方法交换

    theClass, @selector(suspend), @selector(af_suspend)); } } - (NSURLSessionTaskState)state { NSAssert in the actual dummy class"); return NSURLSessionTaskStateCanceling; } - (void)af_resume { NSAssert postNotificationName:AFNSURLSessionTaskDidResumeNotification object:self]; } } - (void)af_suspend { NSAssert 正常处理原有逻辑的同时,多发送一个通知,以下是我们需要替换的新方法: //被替换掉的方法,只要有TASK开启或者暂停,都会执行 - (void)af_resume { NSAssert([self postNotificationName:AFNSURLSessionTaskDidResumeNotification object:self]; } } - (void)af_suspend { NSAssert

    88040发布于 2021-09-03
  • 来自专栏全栈程序员必看

    iOS二维码扫描

    在DTCameraPreviewController中添加以下viewDidLoad方法: - (void)viewDidLoad { [super viewDidLoad]; NSAssert NSAssert([self.view isKindOfClass:[CWVideoPreviewView class]], @"Wrong root view class

    1.2K20编辑于 2022-09-12
  • 来自专栏MelonTeam专栏

    走进 Masonry

    ; } - (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute { NSAssert NSLayoutRelation relation) { // if ([attribute isKindOfClass:NSArray.class]) { // NSAssert shouldBeReplacedWithConstraint:compositeConstraint]; // return compositeConstraint; // } else { NSAssert MASViewAttribute.class]) { _secondViewAttribute = secondViewAttribute; } else { NSAssert = [self.firstViewAttribute.view mas_closestCommonSuperview:self.secondViewAttribute.view]; NSAssert

    1.3K90发布于 2018-01-04
  • 来自专栏陈满iOS

    iOS框架·Masonry源码深度解析及学习启示:设计模式与链式编程思想

    attribute, NSLayoutRelation relation) { if ([attribute isKindOfClass:NSArray.class]) { NSAssert } else { _secondViewAttribute = secondViewAttribute; } } else { NSAssert replacementConstraint { NSUInteger index = [self.childConstraints indexOfObject:constraint]; NSAssert = [self.firstViewAttribute.view mas_closestCommonSuperview:self.secondViewAttribute.view]; NSAssert MASViewAttribute.class]) { _secondViewAttribute = secondViewAttribute; } else { NSAssert

    1.5K20发布于 2018-09-10
  • 来自专栏晓说AI

    手写一句话识别demo笔记

    - (void)checkQCloudAppInfo { NSAssert([kQDAppId length] > 0, @"appid is not set"); NSAssert([ kQDSecretId length] > 0, @"secretId is not set"); NSAssert([kQDSecretKey length] > 0, @"secretKey

    1.1K20发布于 2020-04-22
  • 来自专栏欧阳大哥的轮子

    iOS标准库中常用数据结构和算法之哈希表

    strcpy(ent.key, "Bob"); ENTRY *p1 = hsearch(ent, ENTER); NSAssert(strcmp(p1->key, "Bob ENTRY *p2 = hsearch(ent, ENTER); //查找 ENTRY *p3 = hsearch(ent, FIND); NSAssert

    1K20发布于 2019-05-06
  • 来自专栏君赏技术博客

    HQ移动20170317期周报

    NSAssert() 和 NSCAssert()的使用 NSAssert()用于 OC 语法的断言 NSCAssert()用于 C语言语法的断言 2.

    70830发布于 2018-08-31
  • 来自专栏全栈程序员必看

    《Cocos2D权威指南》——3.5 CCTexture纹理类「建议收藏」

    CCTextureCache在多个方法中都有体现,以CCSprite类的初始化方法之一为例: -(id) initWithFile:(NSString*)filename rect:(CGRect)rect { NSAssert initWithTexture的方法实现如下: -(id) initWithTexture:(CCTexture2D*)texture rect:(CGRect)rect { NSAssert

    1.4K10编辑于 2022-07-20
  • 来自专栏iOS开发随笔

    iOS原生sqlite3框架操作数据库

    = SQLITE_OK) {// SQLITE_OK 打开成功 //失败 无论成功还是失败都要关闭数据库 sqlite3_close(db); NSAssert = SQLITE_OK) { //失败 sqlite3_close(db); NSAssert(NO, @"建表失败!

    1.5K50发布于 2018-07-04
领券