Articles of 目标C

在Xcode中设置一个C / C ++ makefile项目:语法高亮,自动完成,跳转到定义等等!

在这篇文章中,我将向您展示如何设置Xcode,以便您可以在C / C ++项目中使用它。 它将允许您使用IDE提供的所有出色功能。 在撰写本文时,我正在使用Xcode 9.2和MacOS High Sierra。 我将以crazyflie 2.0固件项目为例。 它具有一个使用makefiles作为构建系统的C代码库。 第一步:获得构建项目的工具 在这种情况下,crazyflie项目需要用于Arm的GNU嵌入式工具链。 他们提供了许多安装选择(虚拟机,docker,从源代码构建,从ARM下载预编译的二进制文件),但是我发现的最简单的方法是使用此brew公式,该公式从ARM获取最后一个预编译的二进制文件并对其进行配置,因此您唯一需要做的是: $ brew tap osx-cross/arm $ brew install arm-gcc-bin 之后,您可以通过检查版本来验证正确的安装: $ arm-none-eabi-gcc –version arm-none-eabi-gcc(用于Arm嵌入式处理器的GNU工具7-2017-q4-major)7.2.1 20170904(发行版)[ARM / embedded-7-branch版本255204] 版权所有(C)2017自由软件基金会,Inc. 这是免费软件; 请参阅复制条件的来源。 没有保修; 甚至不是出于适销性或针对特定目的的适用性。 第二步:获取项目的源代码 在这种情况下,请获取crazyflie固件的源代码。 因为此特定项目使用git子模块,所以我们还需要传递–recursive参数: git clone-递归https://github.com/bitcraze/crazyflie-firmware.git 之后,该项目将位于名为crazyflie-firmware的文件夹下。 第三步:设置要构建的Xcode项目 首先,通过执行以下操作创建一个新的Xcode项目: 文件->新建->项目 在cross-platform选项卡下,使用External Build System模板。 给它起个名字并完成设置: 然后,转到主要目标的info选项卡,并将“ Directory字段更改为包含crazyflie源代码的目录: crazyflie-firmware 。 还建议传递-j参数以启用多核构建(更快!):在我的情况下,我有2个核,因此我传递-j2参数。 结果是: […]

编程语言的力量将在2018年引起关注

2018年即将来临,如果您是开发人员,您可能会想知道,明年编程语言将如何吸引您!根据GitHub编程语言使用统计,今年排名前列的编程语言与去年相同- C和Javafighting居首位。 事实没有什么令人惊讶的,不是吗? 在此博客中,我们打破了人们的期望并竭尽所能,以理解将在2018年发展壮大的最强大,引人入胜和有希望的编码语言。检查所有方面是否看起来我们的期望将是有趣的一倍,才有效。 我们概述了对编程语言的预测,这些语言将在2018年主导游戏的发展– 的JavaScript JavaScript在这个季节风靡一时。 最近在前端编程世界中发生了如此多的惊人产品。 总而言之,您不能忽略React成为开源JavaScript库的方式。 到现在为止,众所周知的和有效的方言有了更多的区别。 响应几乎可以解决您所付诸的一切。 前端流畅吗? 它就是为此而设计的。 虚拟现实和增强现实? 检查React VR。 多阶段的东西? React Native涵盖了这一点。 另外,现在您甚至可以使用它来克隆Facebook。 TypeScript也上升了。 TypeScript是一种免费的开源编程语言,它是JavaScript的严格语法超集,并向该语言添加了可选的静态类型,可在任何地方运行,适合于构建大型应用程序,此外,它还用于Unity Engine中 。 爪哇 Java技术使您可以在安全的计算环境中工作和娱乐。 Java根据TIOBE索引在编程语言排名中排名第一,它用于创建我们非常喜欢的Android应用程序-Uber, Slack , Tinder , Amazon等。 Java开发功能可用于从基本移动应用程序到游戏和VR应用程序的所有内容。 只要记住要给它足够的内存即可。 ROR(Ruby on Rail) 关于ROR的淡出和Node.js的取代一直存在着积极的争论。 我们说:不! TIOBE指数表明ROR也是相关的。 Ruby在2月份排名第11位,与2016年的排名完全相同。TIOBE会根据全球熟练技术工程师,课程和利用谁使用编程语言的外部商人的数量来选择评估。 ROR很难学习,这是事实,并且Rails开发中的红宝石需要非常精确的方法。 Ruby on Rails是一个基于服务器的Web应用程序框架,在Rails 5发布后,它具有新的Web开发潜力。 Turbolinks 5和ActionCable等功能非常出色。 开发人员现在可以摆脱客户端JS框架,并使用Turbolinks 5从Rails堆栈直接生成单页应用程序。他们还可以通过ActionCable将WebSockets与其他Rails应用程序集成。 这使开发人员能够以与其他Rails应用程序类似的形式和样式在Ruby上实时编写功能,同时保持良好的可伸缩性和流畅的性能。 C# C#是创建平台或VR(虚拟现实)应用程序的不错决定。 它让人联想到Java,使用和编写代码的需求也比JavaScript少。 C#非常适合各种企业应用程序。 […]

如何确定同一iOS设备上对等TCP连接的PID?

由于我不愿意进入的原因(与我无法更改的第三方库的兼容性),我需要使用TCP套接字在iOS中的单个进程中执行IPC。 为了防止其他进程与我的TCP IPC套接字通信,我想通过操作系统validation调用connect() (来自另一个线程)的进程具有与我自己相同的PID。 在操作系统XI上注意到netstat没有这些信息(与其他操作系统,如Windows和Linux不同),我能够确定此信息的唯一方法是使用lsof 。 我不确定iOS沙箱中可用的是什么,但到目前为止,似乎我最好的选择(尽管看起来很昂贵)是要弄清楚lsof正在做什么并尝试复制它。 有谁知道我可以使用系统调用来检查这个? 我已经阅读过getsockopt(2)并且没有看到任何适用的内容,我找不到有关支持ioctl(2)调用的文档。 这可能是什么?

GLKit的GLKMatrix“专栏”如何?

前提A. 当在线性存储器中讨论“列主要”矩阵时,一个接一个地指定列,使得存储器中的前4个条目对应于矩阵中的第一列。 另一方面,“行主要”矩阵被理解为一个接一个地指定行,使得存储器中的前4个条目指定矩阵的第一行。 GLKMatrix4看起来像这样: union _GLKMatrix4 { struct { float m00, m01, m02, m03; float m10, m11, m12, m13; float m20, m21, m22, m23; float m30, m31, m32, m33; }; float m[16]; } typedef union _GLKMatrix4 GLKMatrix4; 关于m成员的文档说: 按列顺序排列的矩阵元素的一维数组。 前提B GLKMatrix4中的“行”是一组4个水平声明的浮点数( [m00, m01, m02, m03]将是第一个“行”)。 因此,这些条目可以解释为mRowCol( m12将是第1行第2列的条目)。 如果我们根据声明的顺序查看这些GLKMatrix结构成员的布局,我们会看到: [m00, m01, m02, m03, m10, m11, m12, […]

文件是为i386构建的,而不是在Mac OSX 10.6上为iOS 4.2编译OpenCV2.2时所链接的架构(x86_64)

我一直在关注http://www.atinfinity.info/wiki/index.php?OpenCV/Using%20OpenCV%202.2%20on%20iOS%20SDK%204.2的简单指南(使用旧的指南我也读过在http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en )将OpenCV2.2编译为在iOS 4.2上运行。 一切顺利,直到我试图建立。 当我运行以下内容时: lc:opencv_simulator leonard$ ../opencv_cmake.sh Simulator ../../OpenCV-2.2.0/ 我收到以下错误: ld: warning: in /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.2.sdk/usr/lib/libSystem.dylib, file was built for i386 which is not the architecture being linked (x86_64) 这是使用(显然在其他设置中): -D CMAKE_OSX_ARCHITECTURES=”i386″ 我在OSX 10.6上看到i386被视为默认值,因此它使用系统默认值(但这是x86_64)。 我也读过我可以使用: export CFLAGS=-m32 export CPPFLAGS=-m32 但这也不起作用。 有任何想法吗?

访问另一个类中的一个类的数据variables

在任何人提出有关xxxx问题的类似或重复问题之前,我已经检查了27个问题,至今没有人能够明确和帮助我,最有可能的是没有人以最简单的forms发布这个问题。 所以我有一个在我存储一些数据的1类NSstring。 ##Class 1 .h @property ….. NSString *str; .m -(void) someMethod { self.str = @"Blah blah"; } 现在我想通过类2中的属性“str”访问这个“Blah Blah”数据,而不通过任何方法或类似的方法传递它。 我只是需要访问它的地方(例如让我们说viewDidLoad)。 什么是最简单的方法? PS:我正在考虑在appdelagate.m中创build一个* tempStringvariables,并通过创build一个AppleDelegate * apdg对象并访问它来在w / e类中访问它。 任何其他的想法?

如何在我自己的应用程序中将图像设置为ios7中locking屏幕的壁纸?

我正在build立一个相册应用程序。 我想在我自己的应用程序中设置一张照片作为壁纸。 有没有一些方法可以做到这一点? 更新:我知道已经有一些类似的问题发布。 但他们没时间了。 所以我想知道在iOS7中是否有一些方法来实现。

预期的':'词法或预处理器错误

那么这应该是一个非常快速和容易的问题。 我正在创build一个滚动视图,我已经完成了所有的事情,但有一个错误,我只是不明白! 就像它只是混乱,没有任何意义的我! 错误://预期':' ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController{ } @property (weak, nonatomic) IBOutlet UIScrollView *ScrollView; @end ViewController.m @interface ViewController () @end @implementation ViewController – (void)viewDidLoad { [super viewDidLoad]; [self ScrollView setScrollEnabled YES] // Expected ':' [self ScrollView setContentSize: CGSizeMake(320, 900)] } 编辑:我做了所有这一切,它只是说预期的标识符。 [super viewDidLoad]; [self.ScrollView setScrollEnabled: YES]; [[self.ScrollView setContentSize: CGSizeMake(320, 900)]]; //expected […]

iOS – 删除我已删除的属性的引用

我之前创build了一个button,将其命名为“hi”。 我手动删除了我的.h和.m文件中的代码,并从故事板中删除了该button,现在我得到下面的错误: 2014-02-08 18:31:53.135 MadLibs2 [7645:70b] *由于未捕获的exception'NSUnknownKeyException',原因:'[setValue:forUndefinedKey:]:该类不是键值编码兼容的键hi “。 如何删除“hi”引用? // JBViewController.h // MadLibs2 #import <UIKit/UIKit.h> @interface JBViewController : UIViewController // Properties manage an object's internal data //// A properties data is stored in an instance variable or ivar (eg, *sliderLabel) // The property accesses ivars via getter/setter methods (aka accessors) // put @property in front […]

如何在iPhone中以降序对数组进行sorting

我想按降序对数组进行sorting,我可以按升序对数组进行sorting,这里是我的代码按升序sorting, NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"year" ascending:NO]; NSArray * descriptors = [NSArray arrayWithObjects:sortDescriptor, nil]; sortedArray = [array sortedArrayUsingDescriptors:descriptors]; dictionaryWithSortedYears = [[NSMutableDictionary alloc] init]; NSString *tempDateKey = nil; for (TreeXmlDetails *list in sortedArray) { id obj = [dictionaryWithSortedYears objectForKey:list.year]; if(!obj) { if(tempDateKey == nil) { arrayFromList = [[NSMutableArray alloc] init]; tempDateKey = list.year; } } […]