Objective-C autoreleasepool指令效果变量在范围之外。

时间:2018-06-10 11:29:45

标签: objective-c nsautoreleasepool

假设我已经将c ++函数与objective-c成员结合起来了。 该函数获取import React from 'react'; import ReactDOM from 'react-dom'; import CodeMirror from 'react-codemirror' var createReactClass = require('create-react-class'); require('codemirror/lib/codemirror.css'); var axios = require('axios'); var App = createReactClass({ getInitialState: function() { return { code: getRepos(), }; }, updateCode: function(newCode) { this.setState({ code: newCode, }); }, render: function() { var options = { lineNumbers: true, styleSelectedText: true, }; return <CodeMirror value={this.state.code.toString()} onChange={this.updateCode} options={options} /> } }); async function getRepos(){ var code = await axios.get('https://api.github.com/repos/<.java file>', {headers: { "Accept" : "application/vnd.github.VERSION.raw" } }) .then(response => { var codeq = response.data; return codeq; }); console.log(code); return code; } ReactDOM.render(<App/>, document.getElementById('root')); 并将其转换为std::string,并在离开前使用此变量...

我是否希望在NSstring*范围结束时发布NSstring*

autoreleasepool

1 个答案:

答案 0 :(得分:0)

不,你不需要。根据规则,如果要通过以下方式之一增加其保留计数,则只需释放变量:

  1. 通过new或alloc / init初始化。
  2. 通过副本复制。
  3. 通过保留增加保留计数。
  4. 如果你以任何方式获得变量但是上面提到的方式,你不拥有它,因此你不需要释放它。

    通过[NSString stringWithUTF8String:path.c_str()]返回的字符串是自动释放的字符串。一旦当前的runloop完成,它将被释放。所以你不需要发布它。