小编hug*_*gie的帖子

使用ARC将没有ARC的项目添加到项目中

在X代码中,如果我创建一个带有自动引用计数(ARC)的新项目,并通过文件添加现有的非ARC项目 - >添加文件到(是否考虑添加到工作区?不确定工作区术语),那会有用吗?那么我在这个项目中编写的新代码可以是ARC代码吗?

以这种方式添加项目时,文件未列在"已编译的源"中; 因此,我没有设置"-fno-objc-arc".

我注意到MapBox-ios-example似乎正在这样做.你刚刚添加它而不考虑它吗?

一个单独的问题是,如果它是一个非ARC静态库(.a)我将链接到我的ARC项目?我是否必须对非ARC库中的类做任何特殊操作?

编辑:对不起,迟到的回复.

几乎所有人都回答了我的第二个问题,我非常感谢你们.由于nverinaud是第一个回答这个问题的人,所以我正在学习如何给予他信任.(授予赏金似乎有时间限制?如果留下他们的答案,我想给予nverinaud信用.)

但是我仍然怀疑我的第一个问题.根据Mapbox示例和说明,我正在将一个非ARC"项目文件"本身添加到我当前的ARC项目中.我必须强调,我不是将源文件(.m .c)单独添加到项目中,而是添加项目文件..m和.c似乎位于单独文件夹中的单独项目中.而且这个Mapbox项目有像[view release]这样的调用,我不需要特殊的-fno-objc-arc标志来静音警告,因为警告不在那里.

我知道,通常当您将非ARC源文件添加到ARC项目中时,您将收到编译器警告,该警告不会让您通过编译器阶段.但在我的情况下,我没有得到任何.我的问题尤其不是如何放置标志(我知道),不管是否需要标志(我猜我没有,我把它放入时甚至可能有编译器警告?我没有不要试试.因为没有国旗就没有任何警告.我要求某种解释为什么没有警告,以及我是否做得对.

这是一个截屏.在此输入图像描述.OfflineSpotty是我创建的ARC文件.MapView.xcodeproj是我添加的非ARC项目.希望图像能够澄清一些事情.

objective-c automatic-ref-counting

8
推荐指数
2
解决办法
4509
查看次数

清除iOS BLE缓存

我目前正在iOS 7上运行.看来在扫描期间检索到的BLE外围设备名称是根据地址缓存的.即使使用新值刷新BLE设备的名称,在iOS 7的外围设备发现期间,[myCentralManager scanForPeripheralsWithServices:nil options:nil];我在刷新之前获得旧设备名称.

  1. 有没有办法以编程方式清除BLE设备缓存?
  2. 即使手动冲洗,似乎也不可能.在设置 - >蓝牙下,BLE设备似乎永远不会被列出,尽管能够以编程方式扫描和连接.(按照这里的指示)为什么?

ios core-bluetooth bluetooth-lowenergy

7
推荐指数
1
解决办法
6162
查看次数

在TLV8中准备数据

我正在用TLV8格式编写HomeKit(也许是蓝牙)特性.Apple医生说

该值是一个NSData对象,包含一组一个或多个TLV8,它们是具有8位类型,8位长度和N字节值的打包类型长度值项.

根据Wikipeida,类型长度值是

类型

二进制代码,通常只是字母数字,表示消息的这一部分所代表的字段类型;

长度

值字段的大小(通常以字节为单位);

可变大小的字节序列,包含此部分消息的数据.

我不知道怎么打包一个.我想我可以将原始字节写入NSData,但是如果我需要填充等,我应该为pad写什么呢?那么有一个如何做的例子吗?

bluetooth ios tlv homekit

7
推荐指数
1
解决办法
895
查看次数

iPhone剪辑图像与路径

我想用路径剪辑图像.在"使用石英编程"一书中,有一个关于如何绘制由矩形路径剪切的圆的示例(第37页),还有一章关于图像蒙版,现有图像为模板(第10章).但我仍然不确定如何使用路径剪辑现有图像.有没有例子或指针?

iphone quartz-graphics

6
推荐指数
1
解决办法
4952
查看次数

用于视图的iPhone屏幕截图

在iPhone上,是否可以"屏幕捕获"UIView及其所有子视图?如果有可能,怎么样?

cocoa-touch objective-c ios

6
推荐指数
1
解决办法
2223
查看次数

Xcode和Instruments跟踪内存使用情况

iOS模拟器上的我的应用程序使用了太多的内存.可能是内存泄漏了.它是一个支持ARC的项目,包含普通的C代码.我尝试了一些小项目,我malloc和故意泄漏,仪器似乎没有注意到.我按照这里描述的使用Valgrind尝试了它 ,但我无法让它运行.它说"错误:地址不包含指向目标文件中某个部分的部分".

我还有其他选择吗?有关如何找到我泄漏的建议吗?

debugging valgrind memory-leaks instruments xcode4

6
推荐指数
1
解决办法
372
查看次数

是否可以将conda安装完全脱机的依赖项?

我要教10个以上的人开始使用Python,需要在他们自己的机器上安装它.我选择使用Miniconda,因为我希望使用iPython,matplotlib等进行无痛的Python 3安装.恐怕每个通过网络安装的人都会堵塞它.有没有办法提前获取所有包及其依赖项并在讲座中将它安装在计算机上?

编辑:我怀疑大多数将在Windows上运行.

python-3.x anaconda miniconda

6
推荐指数
1
解决办法
3005
查看次数

Mongoose __v 什么时候变

根据http://aaronheckmann.tumblr.com/post/48943525537/mongoose-v3-part-1-versioning当数组元素移出其原始位置时,版本字段 __v 应该会发生变化。

我运行了一个测试代码(Mongoose 版本 3.8.15):

var mongoose = require('mongoose');

var db = mongoose.connection;
mongoose.connect('mongodb://localhost:27017/node_test');
db.on('error', console.error.bind(console, 'connection error:'));

var testSchema = mongoose.Schema({
  name: String,
  arr: [Number]
})
var Test = mongoose.model('Test', testSchema);

var t = Test();
t.name = 'hi'
t.arr = [1, 2, 3, 4, 5, 6];
t.save(function (err, result) {
  console.log(result)
  Test.update({'name': 'hi'}, {$pull: {'arr': 3}}, function(err2, result2) {
    console.log(result2)
    Test.find({'name': 'hi'}, function(err3, result3) {
      console.log(result3);
      db.close();
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

输出:

{ __v: 0,
  name: 'hi', …
Run Code Online (Sandbox Code Playgroud)

javascript mongoose mongodb node.js

6
推荐指数
1
解决办法
8575
查看次数

Cordova“无法获取插件”错误

最近,我经常碰到这个“无法获取插件错误”。如果我下载自己的分支,似乎特别容易支撑:

t2wu @ THW-air:〜/ Documents / Work / John / DEMO_APP / BCAppII(dev)$ cordova插件添加https://github.com/t2wu/cordova-plugin-geofence.git#t2wu

错误:无法通过注册表获取插件 https://github.com/t2wu/cordova-plugin-geofence.git#t2wu。可能是连接问题,或者插件规格不正确。检查您的连接和插件名称/版本/ URL。无法获取安装模块的绝对路径

如果下载类似的插件cordova plugin add cordova-plugin-geofence,但是当我必须使用特定的存储库,尤其是该存储库上的分支时,它经常会失败。

我正在使用Cordova 7.1.0。(Cordova 8还有其他我现在不愿意解决的问题。)

cordova

6
推荐指数
1
解决办法
3936
查看次数

JavaScript工作队列

我创建了这个包含数组的对象,该数组用作工作队列.

它有点像这样:

var work1 = new Work();
var work2 = new Work();
var queue = Workqueue.instance();

queue.add(work1) // Bluebird promise.
.then(function addWork2() {
  return queue.add(work2);
})
.then(function toCommit() {
  return queue.commit();
})
.then(function done(results) {
  // obtain results here.
})
.catch(function(err){});
Run Code Online (Sandbox Code Playgroud)

它适用于这种情况,我可以在调用提交之前提交多个任务.

但是,如果它是这样的:

var work1 = new Work();
var work2 = new Work();
var queue = Workqueue.instance();

queue.add(work1)
.then(function toCommit1() {
  return queue.commit();
})
.then(function done1(result1) {
  // obtain result1 here.
})
.catch(function(err){});

queue.add(work2)
.then(function toCommit2() {
  return queue.commit();
}) …
Run Code Online (Sandbox Code Playgroud)

javascript promise bluebird

5
推荐指数
1
解决办法
733
查看次数