{ "id": "109059", "key": "TIMOB-12558", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "14162", "description": "Release 3.1.0", "name": "Release 3.1.0", "archived": true, "released": true, "releaseDate": "2013-04-16" }, { "id": "15104", "description": "2013 Sprint 03 API", "name": "2013 Sprint 03 API", "archived": true, "released": true, "releaseDate": "2013-02-11" }, { "id": "14813", "description": "2013 Sprint 03", "name": "2013 Sprint 03", "archived": true, "released": true, "releaseDate": "2013-02-11" }, { "id": "14982", "description": "Release 3.2.0", "name": "Release 3.2.0", "archived": false, "released": true, "releaseDate": "2013-12-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2013-04-05T21:23:56.000+0000", "created": "2013-02-01T23:28:16.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "ARC", "qe-closed-3.2.0" ], "versions": [], "issuelinks": [ { "id": "25438", "type": { "id": "10001", "name": "Cloners", "inward": "is cloned into", "outward": "is cloned from" }, "outwardIssue": { "id": "82102", "key": "TIMOB-5909", "fields": { "summary": "iOS: Convert codebase to ARC", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false } } } }, { "id": "26723", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "110798", "key": "AC-2132", "fields": { "summary": "iOS: Compiling the Xcode project gives warnings because TIMOB-12558 wasn't fully implemented.", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "32009", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "120176", "key": "TIMOB-15275", "fields": { "summary": "iOS: Enable ARC by default in Titanium Mobile Module projects", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2013-12-11T00:27:08.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "The original feature request was for ARC in all of TiMob codebase. This is less ambitious, and just to allow modules that use ARC to interact with Titanium.\r\n\r\n{quote}\r\nAutomatic Reference Counting (ARC) for Objective-C makes memory management the job of the compiler. By enabling ARC with the new Apple LLVM compiler, you will never need to type retain or release again, dramatically simplifying the development process, while reducing crashes and memory leaks. The compiler has a complete understanding of your objects, and releases each object the instant it is no longer used, so apps run as fast as ever, with predictable, smooth performance.\r\n{quote}\r\n\r\nMore info [here|http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html].\r\n", "attachment": [], "flagged": false, "summary": "iOS: Allow external modules to use ARC", "creator": { "name": "mofle", "key": "mofle", "displayName": "Sindre Sorhus", "active": true, "timeZone": "Europe/Oslo" }, "subtasks": [], "reporter": { "name": "mofle", "key": "mofle", "displayName": "Sindre Sorhus", "active": true, "timeZone": "Europe/Oslo" }, "environment": null, "comment": { "comments": [ { "id": "236973", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Originally a community pull request. Max added a line. I added snarky comments. It's all good and merged. Unfortunately, the test case is not much more than 'compiles, make sure there's no side effects for Titanium itself' (Spoilers: no change for non-ARC code)", "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-02-02T00:10:46.000+0000", "updated": "2013-02-02T00:10:46.000+0000" }, { "id": "236978", "author": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Pull requests\nhttps://github.com/appcelerator/titanium_mobile/pull/3838\nhttps://github.com/appcelerator/titanium_mobile/pull/3839", "updateAuthor": { "name": "vduggal", "key": "vduggal", "displayName": "Vishal Duggal", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2013-02-02T00:38:05.000+0000", "updated": "2013-02-02T00:38:05.000+0000" }, { "id": "237900", "author": { "name": "steipete", "key": "steipete", "displayName": "Peter Steinberger", "active": true, "timeZone": "Europe/Berlin" }, "body": "Hi, I'm the original author of this pull request. Thanks for merging this in 3.0.2. I've tried it and compiling works now - thanks!\r\n\r\nYet there are lots of warning now about the __bridge. There's an easy workaround for this: (KrollContext.h, Line 156)\r\n\r\n#if __has_feature(objc_arc)\r\nKrollContext *ctx = (__bridge KrollContext*)TiObjectGetPrivate(TiValueToObject(globalContext, value, NULL));\r\n#else\r\nKrollContext *ctx = (KrollContext*)TiObjectGetPrivate(TiValueToObject(globalContext, value, NULL));\r\n#endif\r\n\r\nAlternatively you can also make something like an __arc_bridge and define that to either \"\" or \"__bridge\" if you need this more than once.", "updateAuthor": { "name": "steipete", "key": "steipete", "displayName": "Peter Steinberger", "active": true, "timeZone": "Europe/Berlin" }, "created": "2013-02-10T10:39:09.000+0000", "updated": "2013-02-10T10:39:09.000+0000" }, { "id": "237987", "author": { "name": "mstepanov", "key": "mstepanov", "displayName": "Max Stepanov", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The following block would be better:\n{code}\n#if !__has_feature(objc_arc)\n#define __bridge\n#endif\n{code}", "updateAuthor": { "name": "mstepanov", "key": "mstepanov", "displayName": "Max Stepanov", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-02-11T17:52:52.000+0000", "updated": "2013-02-11T17:52:52.000+0000" }, { "id": "238895", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Will close issue after discussion with QE. Please reopen if this becomes a problem again.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-02-19T17:56:45.000+0000", "updated": "2013-02-19T17:56:45.000+0000" }, { "id": "242319", "author": { "name": "dsefton", "key": "dsefton", "displayName": "Daniel Sefton", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Community user in TC-1965 suggests that the __bridge warnings still exist, and that one of the workarounds suggested in the last couple of comments should be implemented. Or alternatively an explanation as to why this was closed. Cheers.", "updateAuthor": { "name": "dsefton", "key": "dsefton", "displayName": "Daniel Sefton", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-14T21:36:06.000+0000", "updated": "2013-03-14T21:36:06.000+0000" }, { "id": "242747", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Actually, the better answer would be to move this into a non-inlined function so that it can be better optimized and avoid any conflicts if an old module runs on a newer SDK.", "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-18T20:35:47.000+0000", "updated": "2013-03-18T20:35:47.000+0000" }, { "id": "242819", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "https://github.com/appcelerator/titanium_mobile/pull/3985", "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-19T00:31:42.000+0000", "updated": "2013-03-19T00:31:42.000+0000" }, { "id": "243607", "author": { "name": "mlangston", "key": "mlangston", "displayName": "Matt Langston", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Functional Test passed. This is how I tested:\r\n\r\n# Created Titanium Module Project based on SDK 3.0.2GA. This SDK is not aware of ARC.\r\n# Created Titanium Project based on SDK 3.1.0 master branch, which removed the inline function mentioning __bridge (i.e. an ARC construct).\r\n# Noted there were no regressions, proving that functional test passed.\r\n# Also noted there were 29 compiler warnings.\r\n# Rebuild the Titanium project based on SDK 3.2.0GA.\r\n# Noted there were 58 compiler warnings. The decrease in the number of compiler warnings is also an improvement.\r\n", "updateAuthor": { "name": "mlangston", "key": "mlangston", "displayName": "Matt Langston", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-22T00:20:03.000+0000", "updated": "2013-03-22T00:20:03.000+0000" }, { "id": "245738", "author": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Tested with 3.1.0.v20130402092426 and it is not working. I get two errors in the following files:\r\n\r\nTiBuffer.h\r\nhttp://f.cl.ly/items/1D2d1l3p1s3i0p2e2m3A/Screen%20Shot%202013-04-04%20at%2010.07.04%20AM.png\r\n\r\nKrollCallback.h\r\nhttp://f.cl.ly/items/2O092U2Q0M1Z001E3j1l/Screen%20Shot%202013-04-04%20at%2010.07.42%20AM.png", "updateAuthor": { "name": "penrique", "key": "penrique", "displayName": "Pedro Enrique", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2013-04-04T17:14:35.000+0000", "updated": "2013-04-04T17:14:35.000+0000" }, { "id": "245815", "author": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "body": "TiBuffer.h is due to our -(NSNumber*)copy:(id)args (As in copy data in and return how much) with -(void)copy:(id)sender (as in cut, copy, paste). To support arc, we'll have to have a renamed version.\n\nKrollCallback.h is due to having code in the header not in the implementation. Guh.", "updateAuthor": { "name": "blainhamon", "key": "blainhamon", "displayName": "Blain Hamon", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-04T22:07:59.000+0000", "updated": "2013-04-04T22:07:59.000+0000" }, { "id": "246061", "author": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "body": "3_1_X PR merged.\n\npending master PR ", "updateAuthor": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-05T21:19:46.000+0000", "updated": "2013-04-05T21:19:46.000+0000" }, { "id": "246065", "author": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Testing the PR ", "updateAuthor": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-05T21:23:56.000+0000", "updated": "2013-04-05T21:23:56.000+0000" }, { "id": "246067", "author": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Testing Instruction\n\n** Create a new Titanium Module Project for iOS from Studio.\n** Open the module project in Xcode.\n** click on the projectname on left pane in xcode and in build settings turn on Obj-C Automatic Reference Counting.\n** Compile the project. You should see only on failure(That is because of the template. If you remove the dealloc method the project would compile successfully)\n\n", "updateAuthor": { "name": "srahim", "key": "srahim", "displayName": "Sabil Rahim", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-05T21:26:37.000+0000", "updated": "2013-04-05T21:26:37.000+0000" }, { "id": "283698", "author": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed. Verified using Sabil's steps.\n\nTested on:\n\nAppcelerator Studio, build: 3.2.0.201312091648\nSDK build: 3.2.0.v20131210112451\nCLI: 3.2.0-cr\nAlloy: 1.3.0-cr\nXcode: 5.0.2", "updateAuthor": { "name": "wluu", "key": "wluu", "displayName": "Wilson Luu", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2013-12-11T00:26:45.000+0000", "updated": "2013-12-11T00:26:45.000+0000" } ], "maxResults": 15, "total": 15, "startAt": 0 } } }